C语言的题目!高手请进来帮忙!

1.以下函数fun的功能是将一个字符串的内容颠倒过来,请填空.
#include <string.h>
void fun(char str[])
{
int i,j,k;
for(i=0,j=____;i<j;i++,____)
{k=str[i];str[i]=str[j];str[j]=k;
}
}
答案是strlen(str)-1,j--
为什么?详细点

2.对以下的程序,从第一列开始输入数据:2473回车,程序的输出结果是____
#include<stdio.h>
void main()
{
while(c=getchar())!=`\n`)
{
switch(c-`2`)
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default :putchar(c+2);break;
}
}
printf("\n");
}
答案是668977
为什么?详细点

3.当输入为adf123fgf456kfg#时,下面程序的输出结果为:
#include<stdio.h>
void main()
{
char c;
int m=0,n=0;
while((c=getchar())!=`#`)
{
switch(c>=`a`&&c<=`z`)
{
case 1:m++;break;
case 2:n++;break;
}
}
printf("%d,%d\n",m,n);
}
答案是9,6
为什么?详细点

谢谢各位大侠了!!!!

#include <string.h>
void fun(char str[])
{
int i,j,k;
for(i=0,j=____;i<j;i++,____)
{k=str[i];str[i]=str[j];str[j]=k; //从第一个到最后一下颠倒
}
}
strlen(str)-1:解释:strlen(str)字符串的长度。 -1为数组的最大下标。数组是从0开始的
J--:解释:循环后减一,即从第一个到最后一下颠倒。

/***********************************************************/

#include<stdio.h>
void main()
{
while(c=getchar())!=`\n`)
{
switch(c-`2`)
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default :putchar(c+2);break;
}
}
printf("\n");
}
说明:当=2时,C=2,C-2=0 执行以下两句。
case 0: //因为没break所以流程到下面
case 1:putchar(c+4); //break为退出选择。
//以上输出为6

当=4时,C=4,C-2=2,
case 2:putchar(c+4);break; //也为6

当=7时,C=7,C-2=5,执行
default :putchar(c+2);break;//default为以上都没时选择这句。
//为9

当=3时,C=3,C-2=1,执行
case 1:putchar(c+4);
case 2:putchar(c+4);break; //为77
//所以答案是668977

/**************************************************/

#include<stdio.h>
void main()
{
char c;
int m=0,n=0;
while((c=getchar())!=`#`) //输入赋给c
{
switch(c>=`a`&&c<=`z`)
{
case 1:m++;break;
case 2:n++;break;
}
}
printf("%d,%d\n",m,n);
}
//我想你这道题出错了吧。c>=`a`&&c<=`z`因为此语句不管怎样不可能为2.
//只有1或0
//所以我想应将case 2:n++;break; 改为case 0:n++;break;
//解释:c>=`a`&&c<=`z`此条件为a到z之间的小写。ASCII比较。
//所以m=9,n=6(其余数字)
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-08-27
第一道:for(i=0,j=____;i<j;i++,____)
是一个算法,自己在纸上算算,k=str[i];str[i]=str[j];str[j]=k;
是交换左右两个数,根据i++j--来推移。在纸上演算吧

C语言高手请进来11
第一题:运行后,循环第一轮后输出8,第二轮后输出7,第三轮输出6,第四轮时达到要求退出循环,结束程序。选B 第二题:这个是找出小于等于50的整数中能被2、3、7整除的数,这个题直接从答案里找一个,所以选C 第三题:运行到这个时for(j=0;j < 3;j++){ if(j%2) continue;x++;} x++ ...

c语言高手请进来!
int i=-1;printf("%d,%o\\n",i,i)上面那大哥说的差不多了,只是%d是表示10进制的,%o是表示8进制的,关于在内存中怎么存贮转化你可以参考下清华大学出版社的 计算机基础,。大一的学生用的。8进制的177777转化成10进制并不是-1,这和在内存中的存储有关系,具体说太复杂了,你去自己看下吧。

C语言高手请进来112233
10.B 11.D 12.C 13.D 以上结果,均是VC运行得出的,肯定正确!

c语言高手请进来...
include <stdio.h> void copy(char *f,char *t);int main(){ char a[]="iamaman"; \/\/ 要改成数组,原先那样定义的是指向常量的指针,是不允许修改的。char b[]="youareaman"; \/\/同上 printf("a=%s \\nb=%s \\n",a,b);copy(a,b);printf("a=%s b=%s ",a,b);getchar()...

C语言高手请进来1122
m=3,21 B 19题怎么只有一半?

请帮忙看一下这个c语言宏代换的结果
第一题:a++*a+b+c*a*++b\/4 3 *3+3+5*3*(3+1)\/4=27 第二个中的 define PRINT(a) PR(a);printf("ok!")该成 define PRINT(a) {PR(a);printf("ok!");}

懂c语言的请进来帮一下!!!
回答:zyl256 新手 5月17日 20:19 我这里只有梯形的程序,楼主可以自己看看修改一下,程序没有问题,都已经在机器上调试过!!include "math.h"define N 8 main(){ int i;float x,y;float z[N-1],r;float sum,s=0,h,w;printf("the input arang [x,y]:\\n");scanf("%f%f",&x,&...

高手请进来 关于C语言main函数
真正的main函数是 返回数据类型 main (int argc, char *argv[])main是有返回值的,不过一般不写(默认整型),或者返回空!就是void,如果返回void类型 当然程序最后不用写return,如果需要返回值,就写return,到底返回什么类型的值就看main前面的类型!void 是一种数据类型,也就是空值,什么都不是...

如果你会C语言和编程 可以请进来帮我解决下问题吗?谢谢?
当让你解决问题的时候会感到束手束脚的。最后就是英语了。其实编程用到的英文单词不多,不过如果你英文不好的话会有一定的心理影响,看到代码就头痛之类的。我的建议是你先学一下python, vb, delphi 之类的语言,熟悉下编程的思想和一些基本的算法,然后回过头来再学C能好点。

学习Java、C语言需要什么学科知识?
好的算法需要很好的数学基础和逻辑思维。你要是刚接触java,c之类的电脑语言。算法你到不必要关心,就当一中外语来学它就可以了。算法这些东西你以后工作中会慢慢积累的!不过其它的知识你要是懂一些会对你学习理解java,c会有帮助的,如 数据结构、操作系统、数据库等等 ...

相似回答
大家正在搜