Ⅰ 学习c语言必须要学会函数吗
函数是C的基础,一定要把函数学通了,我知道C语言的学习是个复杂艰辛的过程。对于没有老师、学校环境,没有人指导的情况下的自学更是难。
所以我想让有经验的人士帮我参谋建议下自学C语言的步骤,我好按部就班。下面是我搜索后自己排的一个步骤,请大家帮我斧正,谢谢!
1、最经典的:《C程序设计语言》第2版,机械工业出版社
这个是C语言的设计者和UNIX系统的设计者合作编写的最经典的C语言教材,原书名叫《The C Programming Language》当然,这本书不太适合0起点的人,看这本书之前最好把《C程序设计》(谭浩强,清华大学)看了,老谭的书销量突破700万册了,虽然比较旧了,也不太符合新标准(现在出第3版了,也还是)但是,入门还是不错的选择。
2、
另外还有必看的是《C Primer Plus》这个是一个美国人写的,人民邮电出版社出了中文版了,第5版,比较厚,砖头书,60元。但是非常适合初学的人,非常详细。
还有《从问题到程序——程序设计与C语言引论》机械工业出版社,这本书也很不错。
Ⅱ 简单的C语言问题,数组翻转
做矩阵转置需要发现其中的规律。仔细分析之后就会知道:从最后一列开始,先输出最下面的元素,然后依次向上输出,该列输出完之后,输出前一列;知道元素全部输出。
下面是我写的代码和运行的结果:
#include<stdio.h>
intmain()
{
inta[100][100],n,i,j;
printf("请输入矩阵的维数:n=% ");
scanf("%d",&n);
printf("请输入矩阵中的元素: ");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("矩阵转置之后为: ");
for(j=n-1;j>=0;j--)
{
for(i=n-1;i>=0;i--)
{
printf("%d",a[i][j]);
}
printf(" ");
}
}
Ⅲ 怎样用c语言表示 翻转的数 比如把81 翻转为18
用c语言表示翻转的数可以参考下面的代码:
#include <stdio.h>
int main()
{int C,D,S;
scanf("%d",&C);
D=(C%10)*10+C/10;
S=C+D;
printf("S=%d",S);
}
(3)c语言学翻转函数吗扩展阅读:
scanf()是C语言中的一个输入函数。
与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。
(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdio.h>。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
Ⅳ C语言:函数 reverse()是什么
标准C中没有reverse()函数
这是C++的一个新增函数
template<class BidirectionalIterator>
void reverse(
BidirectionalIterator _First,
BidirectionalIterator _Last
);
需要引用头文件
#include <algorithm>
命名空间:std
Ⅳ C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符
#include <stdio.h>
#include <string.h>
void input(char st[]);//定义输入函数
void reverse(char st[]);//定义反序函数
int main()
{
char s[20];
input(s);//调用输入函数
printf("Original string: %s ", s);//输出原字符串
reverse(s);//调用反序函数
printf("New string: %s ", s);//输出反序后的字符串
return 0;
}
void input(char st[])
{
printf("Please enter string: ");
gets(st);
}
//反序函数
void reverse(char st[])
{
int n=strlen(st);
for (int i=0, j=n-1, t; i<(n/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);
}
Ⅵ c语言 编写函数实现反转数组里的元素
#include<stdio.h>
inthanshu(inti,inta[])
{
inttemp,counter=i;
for(i=0;i<counter/2;i++)
{
temp=a[i];
a[i]=a[counter-i];
a[counter-i]=temp;
}
}
intmain()
{
inta[10],i=10;
for(i=0;i<10;i++)//<=============
scanf("%d",&a[i]);
hanshu(i,a);
for(i=0;i<10;i++)//<=============
printf(" %d",a[i]);
return0;
}
Ⅶ C语言: 写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
问题很简单:你根本就没有翻转字符串!!!!
第一,你在调用char yuan(char a)后,用什么来接受它的返回值?对吧,在主函数中根本没有任何char组来接受它。你似乎可以将 gets(a);
后的语句改写成 a = yuan( a ); 然后输出。告诉你这也样行不同的,只因为接下来的第二点。
第二,你的yuan函数设计有问题。你犯了一个初学者很容犯的错误试图从被调用函数中返回一个数组(或指针)的值。要知道,被调用的函数编译后存储在堆栈当中:它在被调用时创建,结束调用时销毁。所以说,不能用它来返回数组(或指针)的值。
至此,你的提问已经解决。下面给出我的想法,
现在思考你要解决的问题:将一个字符串(或者说是字符数组)翻转。这就要求你必须为yuan函数传递个字符串参数a;然后就是翻转,但是翻转的字符串不会超出原字符串的长度,故而可设计用它自身将翻转值带出。可将翻转函数原型设计为 void yuan(char *a); 实现如下:
void yuan(char *a){
char temp;
int i;
int count;
count = strlen( a ) - 1; /*这里用count表示可用的最大下标,如当数组元素为5是,可用的最大下标应为4。明白这一点很重要,也很有意思*/
for(i = 0; i < count / 2; i++){
temp = a[i];
a[i] = a[count - i];
a[count - i] = temp;
}
}
再到这里似乎没什么话可说了,不过还是要给出几点建议:
第一,合理使用空白,是你的程序更具可读性;
第二,为设计标识符可以适当学习一下英语;
综上,在学习初期养成良好的编程风格很重要。
谨祝,
学习进步!
Ⅷ C语言 字节 翻转 单片机
直接左移5位就可以了
Ⅸ c语言编程 从键盘上输入一个字符串通过函数调用的方法使该字符串翻转 并输出这个翻转后的字符串
1 输入字符串;
2 调用函数进行翻转,可以通过将对称位置字符交换值实现;
3 输出结果。
代码如下:
voidrevers(char*s)
{
char*p=s,c;
while(*p)p++;
p--;
while(p>s)
{
c=*p;
*p=*s;
*s=c;
}
}
intmain()
{
chars[100];
scanf("%s",s);
revers(s);
printf("%s",s);
}