请计算机C语言高手帮我解答以下三个题目,谢谢! 高分~各位C语言高手帮我解答一个题目.急用,谢谢!

作者&投稿:赖邦 (若有异议请与网页底部的电邮联系)

1、

第一个for要执行5次循环,当i=0;时停止

第二个for要执行4次循环

所以共5乘4,20次;

2、

第二题没有正确答案,答案应该是“1”但是没有这个选项!在VS2008中运行结果也为1!

原因在于  for(a=1,b=10;a<=100;a++)/*在此a的值已被赋为1*/

    {

    if(b>=10)

    break;/*在此已跳出循环体!后面的所有都没必要看了!!*/

   …………

}

最后就是输出a所以值为1;没有正确答案!

3、

do

{

   b-=a;/*此处b=b-a;此时b=9*/

   a++;

    }

while (b--<0);/*b--是先使用再自减,显然9>0,所以跳出do循环体,b自减1,最后b的值为8*/



你好!!!
1.当i=5;循环4次:for(j=0;j<4;j++),j从0到3
、、、、、、、、、
当i=1的时候循环4次、、、、、、
当i=0就退出循环的了,所以循环立刻5*4=20

2.这个题目没有答案!!!实际答案是1;解释:
开始的时候a=1.b=10;然后判断if()语句,显然是成立的,那就执行break,跳出循环,此时的a的值是1
3.怎么没有输出表达式呢???

1.若变量i和j已经定义为int类型,则以下程序段中内循环体的总的执行次数是( A )。
for (i=5;i;i--) /*i非零时执行,也就是1—5,共计5个数*/
for(j=0;j<4;j++)/*j在0到3执行,也就是四次,所以总计为5*4得20次。。*/
{...}
A)20 B)25
C)24 D)30
2.以下程序的输出结果是( D )。
程序1-7:P1-7.c
main()
{
int a,b;
for(a=1,b=10;a<=100;a++) /*初始化a、b*/
{
if(b>=10) /*满足条件b,break执行,整个for循环退出,a不进行自增了,怎么没有答案了啊~~~~~囧*/
break;
if(b%3==1)
{
b+=3;
continue; /*如果执行,则本次循环结束,for循环里面的后面的内容不执行*/
}
}
printf("%d\n",a);
}
A)101 B)6
C)5 D)4
3.假定a和b为int型变量,则执行以下语句后b的值为( D )。
a=1;
b=10;
do
{
b-=a; /*赋值为9先*/
a++; /*a变为2*/
}
while (b--<0); /*执行吧,知道b的值小于0,这个是简化写法!即循环条件为b<0(懂吧?可以把这个改写成普通的while循环,那么b--在循环内的最开始部分,但是第一次它不执行),在此同时b--自减以后进入下次循环。。稍微走一下整个过程结果就出来了*/
A)9 B)-2
C)-1 D)8

1题:
外循环执行5次,到i为0时结束;每次外循环执行时内循环执行4次(j为4时循环结束)。所以为5*4=20次。
2题:
输出结果应该是1。因为for循环只执行一次,第一次循环时,b=10,即 if(b>=10) break; 执行完后退出了循环。
3题:
输出结果应为8。 循环只执行一次,进入循环前b为10,执行b-=a;后b的值为9,a变成2,到while(b--<0);时先判断b<0即9<0为假,所以循环不再执行,但判断完后b减了一个,所以b的值变成8了。

1.中要了解for的用法 中间的是判断语句 第一层的时候 判断语句是 i,如果i=0就会跳出循环 也就相当于 i>0 所以第一层 循环5次 第二层好理解是 4次
所以就是20次
2.第二题 应该是 1 ,因为一进来 b就>=10了 就break了 跳出循环了
3.先进来 立马 b=9 a=2,然后 b--变成了 8 注意b--再语句结束后b才会变成8 此时是b=9 >0 条件不成立 最后退出循环 最后b=8

第一题:
for (i=5;i;i--)
//i从5开始,判断i是否为0,是0就不循环了。所以这里循环了54321,也就是5次
for(j=0;j<4;j++)
这里从0开始,到3,0123,循环了4次,结合上面,循环了20次:)
{...}
第二题:结果是1,首先for初始化,a=1,b=10,完后判断a<=100?是,执行判断语句if(b>=10)?是,执行break,跳出for循环,执行printf("%d\n",a);结果为a加回车。
第三题:a=1,b=10,执行do{b-=a;,这时b=9,继续执行a++,a变为2,判断while(b--<0)?这里为b--,先进行判断,b=9>0,所以不执行循环,再执行b--,b等于8,所以结果为8

我觉得第二题答案不正确- -,

C语言的题目,这些题目怎么解答啊?请高手帮我解答,谢谢了!!~

#include
#include
double sq2(double a,double b);
int main()
{
using namespace std;
cout<<sq2(10,1000) ;
return 0;
}
double sq2(double a,double b)
{

return sqrt(a*b) ;
}

2、求和s=1!+2!+3!+4!,采用自定义函数;


#include
#include
long ntimes(long a );
int main()
{
using namespace std;
cout<<ntimes(4);
}
long ntimes(const long a )
{
long eq=1,eq2=0;

for(int i=1;i<=a;i++)
{
eq*=i;
eq2+= eq;
}

return eq2;
}


3333333333333333
#include
#include
using namespace std;
int divisor(int a,int b);
long mutible(long a,long b);
int main()
{
using namespace std;
cout<<divisor(20,70)<<endl;
cout<<mutible(100,1000);
}
int divisor(int a,int b)
{
int i=(a<b)?a:b;
int c=0;
for(int j=1;j<=i;j++)
{
if(a%j==0 && b%j==0 )
{
if ( j!=1)
c=j;
}
}
if (c==0)
c=1;
return c;
}
long mutible(long a,long b)
{
int i=(a<b)?a:b;
int c;
c=divisor(a,b);
c=a/c *(b/c)*c;

return c;
}


//444444444444444444444

#include
#include
#include
void fourbit(int number) ;
using namespace std;
int main()
{
int num;
cin >>num;
fourbit(num);
}
void fourbit(int number)
{
int a,b,c,d;
a=number/1000;
b=(number-a*1000)/100;
c=((number-a*1000)-b*100)/10;
d=(number-a*1000)-b*100-c*10;
cout <<a<<" ";
cout <<b<<" ";
cout <<c <<" ";
cout<<d<<" ";


}

//55555555555
#include
#include
#include
void max(const int *num,int size) ;
int main()
{
using namespace std;
int a[4]={4,3000,6,100};
max(a,4) ;
}
void max(const int *num,int size)
{
int b=num[0];
for (int i=0;i<size;i++)
{
if(num[i]>b)
b=num[i] ;
}
cout<<b;
}

//6666666666666666

#include
#include
using namespace std;
void cal(const double *num,int size) ;
double arr[10];
double total=0,average=0,max=0,mini=0;
int main()
{
cout<<"请输入10个数字!!" ;
for(int i=0;i<10;i++)
{
cin>>arr[i];
}
cal(arr,10);
cout<<"平均 "<<average<<endl;
cout<<"最大 "<<max<<endl;
cout<<"最小 "<<mini<<endl;
}
void cal(const double *num,int size)
{
max=arr[0];
mini=arr[0];
for(int i= 0;i<size;i++)
{
total+=arr[i];
if(max<arr[i])
max=arr[i];
if(mini>arr[i])
mini=arr[i];

}
average=total/size;
}

//7777777777777
#include
#include
using namespace std;
void reoct(const int a);
int main()
{
int a;
cin>>a;
reoct(a);
}
void reoct(const int a)
{
cout<<oct<<a ;

}


//8、输入两个整数,分别采用子函数调用与指针的方法,将两个数交换顺序,然后输出
#include
#include
using namespace std;
void exchange(int *a,int *b);
int main()
{
int aa=30,bb=60;
exchange(&aa,&bb);
cout<<aa<<" "<<bb;
}
void exchange(int *a,int *b)
{
int temp;
temp=*a;
*a=*b ;
*b=temp;

}

/*9、编写一函数,求一维数组的最大元素及其下标位置(要求使用指针)
已知:数组首地址p,元素个数n;(作函数参数)
结果:下标k;(作返回值)
*/
#include
int *arr(int *p,int n);
int *k;
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"下标的地址是!!"<<arr(a,10)<<endl;
}
int* arr(int *p,int n)
{
int max=*p;
int i;
for(i=0;i<n;i++)
{
if(max < *(p+i))
max=*(p+i) ;

}
cout<<"最大数为!!"<<max<<endl;
k=p+i-1 ;
return k;
}

/*11、求某班某门课的平均成绩,统计超过平均值的人数(要求用指针操作数组)
分析:
1、令p指向score(存放成绩的数组)的开始;
2、通过移动指针求和(重复N次)
3、求平均值;
4、令p重新指向score的开始;
5、不移动指针但通过指针判断各单元的内容是否大于平均值,并计数。
*/
#include
double score[10]={1,2,3,4,5,6,7,8,9,10};
double highscore=0,total=0;
int number=0;
int main()
{
double *p=score;
for(int i=0;i<10;i++)
{
total+=*p;
p++;
}
cout<<"总数为"<<total<<endl<<"平均值为"<<total/10<<endl;
p=score;
highscore=*p;
for(int i=0;i<10;i++)
{
if(total/10<*(p+i))
number++;
}
cout<<"超过平均值的人数为!!"<<number ;
}

下面这个是完整的,可以运行的系统:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 学号 */
char name[20];
char sex[4];
int age;
int birth;
int tele;
char addr[30];

};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;


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


void menu()
{
printf("********************************************************************************");
printf("1登记学生资料2删除学生资料
");
printf("3查询学生资料4修改学生资料
");
printf("5保存学生资料0退出系统
");
printf("********************************************************************************
");
}


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


void printstart()
{
printf("-----------------------------------------------------------------------
");
}
void Wrong()
{
printf("
=====>提示:输入错误!
");
}

void Nofind()
{
printf("
=====>提示:没有找到该学生!
");
}

void printc() /* 本函数用于输出中文 */
{
printf(" 学号 姓名 性别 电话 出生年月 年龄 地址
");
}


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


void printe(Node *p)/* 本函数用于输出英文 */
{
printf("%-12s%s%s%d%d%d%s
",p->data.num,p->data.name,p->data.sex,p->data.tele,p->data.birth,p->data.age,p->data.addr);
}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按学号查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}


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

void Add(Link l) /* 增加学生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 将指针置于最末尾 */
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!
",num);
printstart();
printc();
printe(s);
printstart();
printf("
");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入年龄:");
scanf("%d",&p->data.age);
getchar();
printf("请你输入出生年月:");
scanf("%d",&p->data.birth);
getchar();
printf("请你输入电话:");
scanf("%d",&p->data.tele);
getchar();
printf("请输入地址:");
scanf("%s",&p->data.addr);
getchar();
/* 信息输入已经完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;

}
}


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

void Qur(Link l) /* 查询学生 */
{
int sel;
char findmess[20];
Node *p;

if(!l->next)
{
printf("
=====>提示:没有资料可以查询!
");
return;


}
printf("
=====>1按学号查找
=====>2按姓名查找
");
scanf("%d",&sel);
if(sel==1)/* 学号 */
{
printf("请你输入要查找的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("查找结果
");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("请你输入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("查找结果
");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}


/*************************************************************************************/
void Del(Link l) /* 删除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("
=====>提示:没有资料可以删除!
");
return;
}
printf("
=====>1按学号删除
=====>2按姓名删除
");
scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("
=====>提示:该学生已经成功删除!
");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("请你输入要删除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("
=====>提示:该学生已经成功删除!
");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}


/*************************************************************************************/
void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("
=====>提示:没有资料可以修改!
");
return;
}
printf("请你输入要修改的学生学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号:");
scanf("%s",p->data.num);
printf("请你输入新姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别:");
scanf("%s",p->data.sex);
printf("请你输入新的年龄:");
scanf("%d",&p->data.age);
getchar();
printf("请你输入新的出生年月:");
scanf("%d",&p->data.birth);
getchar();
printf("请你输入新的电话:");
scanf("%d",&p->data.tele);
printf("请输入新的地址:");
scanf("%s",&p->data.tele);
printf("
=====>提示:资料修改成功!
");
shoudsave=1;
}
else
Nofind();

}
/**************************************************************************************************/


void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;

if(!p)
{
printf("
=====>提示:没有资料可以显示!
");
return;
}
printf("显示结果
");
printstart();
printc();
printf("
");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("
");
}

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

void Tongji(Link l)
{
Node *pm,*pe,*pc; /* 用于指向分数最高的接点 */
Node *r=l->next;
if(!r)
{
printf("
=====>提示:没有资料可以统计!
");
return ;
}
pm=pe=pc=r;
while(r!=NULL)
{
if(r->data.age>=pc->data.age)
pc=r;
if(r->data.birth>=pm->data.birth)
pm=r;
if(r->data.tele>=pe->data.tele)
pe=r;



r=r->next;
}

}


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


void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表 */
ll->next=NULL;

if(l->next==NULL)
{
printf("
=====>提示:没有资料可以排序!
");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL )
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("
=====>提示:排序已经完成!
");
}


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


void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("
=====>提示:重新打开文件时发生错误!
");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("
=====>提示:文件保存成功.(有%d条记录已经保存.)
",count);
shoudsave=0;
}
fclose(fp);
}


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

void main()
{
Link l;/* 连表 */
FILE *fp; /* 文件指针 */
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;
printf("学生成绩记录簿

");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("
=====>提示:文件还不存在,是否创建?(y/n)
");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("
=====>提示:文件已经打开,正在导入记录......
");

while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */
{
p->next=NULL;
r->next=p;
r=p; /* 将该接点挂入连中 */
count++;
}
}

fclose(fp); /* 关闭文件 */
printf("
=====>提示:记录导入完毕,共导入%d条记录.
",count);

while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("
=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?
");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("
=====>提示:你已经退出系统,再见!
");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加学生 */
case 2:Del(l);break;/* 删除学生 */
case 3:Qur(l);break;/* 查询学生 */
case 4:Modify(l);break;/* 修改学生 */
case 5:Save(l);break;/* 保存学生 */
case 9:printf("==========帮助信息==========
");break;
default: Wrong();getchar();break;
}
}
}

c语言的问题~~请高手帮忙解答~~
答:我举例说明吧 1 比如输出9.2 : %10.2e 里的 10.2表示 整数位不足10位时前面补空格,小数部分不到2位时末尾添0 . 但因为有个 e,所以用科学计数输出 结果应该为 9.20e+000 否则 %10.2f的话就是 9.20 2 比如输出10 : 按八进制 10= 8 + 2就应该是 12, 输出 12 3 比如输出10 ...

很简单的c语言问题!分很好拿啊!!高手帮忙啊!
答:for(i=0;i<3;i++){ temp=a[i];a[i]=a[5-i];a[5-i]=temp;} for(i=0;i<6;i++){ printf("%d",a[i]);printf("\n");} } 不知道是不是你想要的结果,至于循环次数的问题,在c语言的书里应该讲解的很清楚的,自己翻翻书吧,加深你的记忆。基础知识不是很好的样子啊!解答...

求C语言高手帮忙解答,麻烦帮忙解答下 小弟C语言不懂
答:1 main(){ int year;float money,rate,total;printf(“Input money and year=?”);scanf(“%f,%d”,&money,&year);if(year==1)rate=0.0063;else if(year==2) rate=0.0066;else if(year==3) rate=0.0069;else if(year==5)rate=0.0075;else if(year==8)rate=0.0084;else ...

求高手解答C语言问题
答:102,10 C语言中,以0开头的数字,是八进制数.八进制的12 = 8*1 + 2 = 十进制的10

C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢
答:pt[1]→ e,f,g pt[2]→ h ,i, j 而pt对应的其实就是pt[0]所以 pt+1 =pt[1]2.定义sum的时候 由于没有对sum进行初始化,所以编译器会对sum进行随机赋值,所以sum将会被分配到一个随机数,而在求和的时候累加之后的和当然不确定 3.C 第一次调用fun函数的时候,fun(a+fun(d)) 应该...

关于c语言的问题~~请高手帮忙解答~~
答:因为不清除回车的话,他会被程序截到 然后赋给变量 当你输入abcdefg时 字符a赋给了变量c 然后字符b赋给了getchar()依次 字符c赋给了变量c 然后字符d赋给了getchar()...

c语言考试填空题 求高手解答 【急】 100分!
答:1:当调用函数read从磁盘文件中读数据时,若函数的返回值为10,则表明读入了10个字符;若函数的返回值为0,则是();若函数的返回值为-1,则意味着(函数调用失败)。2:设x是一个整数(16bit),若要通过x|y使x低8位置1,高8位不变,则y的八进制数是 ( c ).3:在C语言中,文件的存取...

计算机二级考试《C语言》知识点归纳(3)
答:第六章 指针变量的本质是用来放地址,而一般的变量是放数值的。int *p 中 *p和p的差别:p可以当做变量来用;*的作用是取后面地址p里面的数值 p是当作地址来使用。p++ 和 (*p)++的之间的差别:改错题目中很重要 p++是 地址会变化。(*p)++ 是数值会要变化。三名主义:(考试的重点)数组名:表示...

C语言的多选问题,高手帮忙做下
答:A、0x4 B、2.5e-2 C、33 D、03A 【选ABC,因为0开头的数字为八进制数,仅有0~7,木有A这个数】2、下列计算机语言中,CPU不能直接执行的是:A、自然语言 B、高级语言 C、汇编语言 D、机器语言 【选ABC,高级语言,编译器会转化为低级语言;自然语言CPU读不懂】3、与汇编程序相比,C语言程序...

C语言程序设计 我是C语言初学者,有一道看程序的题我有些弄不懂,还请...
答:答案:C A:是如果a>b,则一程序一直执行到“b=c;”,效果是换a与b的值;B:是如果a>b,则执行{ }里的语句,效果是交换a与b的值;C:是如果a>b,则执行c=a; 无论a是否大于b,c的值都要给a,a-b;没什么作用;D:是如果a>b,则效果是交换a与b的值,c相当于中转站,a-b;没什么...