C语言 求教高手帮忙解答

来自:    更新日期:早些时候
c语言 求教高手帮忙解答 关于指针~

//此函数功能为找字符串中最大的字符,
//将最大字符的前面的字符均向后移动1位,
//将最大的字符放在字符串首
#include
main()
{
char str[80],*p,max,*q;
p=str;//将指针指向数组首地址
gets(p);//从标准输入读取字符串
q=p;//最大的字符所在的位置
max=*(p++);//将第一个字符当成最大值

while(*p!='\0')
{//找最大的字符
if(max<*p)
{
max=*p;//将最大的字符赋值给max
q=p;//将最大字符的地址赋值给q
}
p++;
}
p=q;//将最大字符的地址赋值给p
while(p>str)
{//将最大字符前的字符均往后移动1位
*p=*(p-1);
p--;
}
*p=max;//将第一个字符赋值为最大的字符
puts(p);//打印字符串到屏幕
}

#include
int main(int argc, char* argv[])
{
int arr[6][5] = {0};
for(int i = 0; i < 6 ;i++)
{
printf("请输入第%d个学生的数学 物理 英语 自然 化学成绩,使用空格分隔
",i+1);
scanf("%d%d%d%d%d",&arr[i][0],&arr[i][1],&arr[i][2],&arr[i][3],&arr[i][4]);
}

float arrAvrage[5] = {0};
for (i = 0 ; i < 6 ; i++)
{
int nToTal = 0;
for (int j = 0; j < 5; j ++)
nToTal += arr[i][j];

arrAvrage[i] = float(nToTal)/5.0;
}
printf("数学 物理 英语 自然 化学的平均成绩为:
%f %f %f %f %f",arrAvrage[0],arrAvrage[1],arrAvrage[2],arrAvrage[3],arrAvrage[4]);


return 0;
}

函数fun()的功能是
当输入的字符是大写是,将该字符的ASCII值加32,也就是转换为小写。
而scanf()函数不能输入空格,因此输入My book时,实际只输入了My
fun()函数将M转换为小写,并由putchar()函数输出

scanf("%s",p);这句只运行了一次对吧?
也就是说只输入了一个字符串。
百度百科:
gets(s)函数与 scanf("%s",s) 相似,但不完全相同,使用scanf("%s",s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

(你这个空格和Book没包含在那个字符数组里)

scanf这种输入法碰到空格就会停止,也就是说实际上只输入了My两个字符而已


C语言 求教高手帮忙解答视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网