c语言入门基础100题 c语言入门基础100题编程

中国机械与配件网5120

大家好,今天小编来为大家解答c语言入门基础100题这个问题,c语言入门基础100题编程很多人还不知道,现在让我们一起来看看吧!

c语言经典100题,要过程

c语言入门基础100题 c语言入门基础100题编程

您好,c语言经典100题:

【程序1】

题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数

都是多少

1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去

掉不满足条件的排列.

2.程序源代码:

main()

{

int

i,j,k;

printf("\n");

for(i1;i<5;i++)

/*以下为三重循环*/

for(j1;j<5;j++)

for

(k1;k<5;k++)

{

if

(i!k&&i!j&&j!k)

/*确保i,j,k三位互不相同*/

printf("%d,%d,%d\n",i,j,k);

}

}

【程序2】

题目:企业发放的奖金根据利润提成.利润(i)低于或等于10万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提

成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于

40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于

100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数

1.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型.

2.程序源代码:

main()

{

long

int

i;

int

bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",&i);

bonus1100000*0.1;bonus2bonus1+100000*0.75;

bonus4bonus2+200000*0.5;

bonus6bonus4+200000*0.3;

bonus10bonus6+400000*0.15;

if(i<100000)

bonusi*0.1;

else

if(i<200000)

bonusbonus1+(i-100000)*0.075;

else

if(i<400000)

bonusbonus2+(i-200000)*0.05;

else

if(i<600000)

bonusbonus4+(i-400000)*0.03;

else

if(i<1000000)

bonusbonus6+(i-600000)*0.015;

else

bonusbonus10+(i-1000000)*0.01;

printf("bonus%d",bonus);

}

【程序3】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后

的结果满足如下条件,即是结果.请看具体分析:

2.程序源代码:

#include

"math.h"

main()

{

long

int

i,x,y,z;

for

(i1;i2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("it

is

the

%dth

day.",sum);}

【程序4】

题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

main()

{

int

day,month,year,sum,leap;

printf("\nplease

input

year,month,day\n");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)/*先计算某月以前月份的总天数*/

{

case

1:sum0;break;

case

2:sum31;break;

case

3:sum59;break;

case

4:sum90;break;

case

5:sum120;break;

case

6:sum151;break;

case

7:sum181;break;

case

8:sum212;break;

case

9:sum243;break;

case

10:sum273;break;

case

11:sum304;break;

case

12:sum334;break;

default:printf("data

error");break;

}

sumsum+day;

/*再加上某天的天数*/

if(year%4000||(year%40&&year%100!0))/*判断是不是闰年*/

leap1;

else

leap0;

if(leap1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("It

is

the

%dth

day.",sum);}

【程序5】

题目:输入三个整数x,y,z,请把这三个数由小到大输出.

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,

然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小.

2.程序源代码:

main()

{

int

x,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if

(x>y)

{tx;xy;yt;}

/*交换x,y的值*/

if(x>z)

{tz;zx;xt;}/*交换x,z的值*/

if(y>z)

{ty;yz;zt;}/*交换z,y的值*/

printf("small

to

big:

%d

%d

%d\n",x,y,z);

}

【程序6】

题目:用*号输出字母c的图案.

1.程序分析:可先用'*'号在纸上写出字母c,再分行输出.

2.程序源代码:

#include

"stdio.h"

main()

{

printf("hello

c-world!\n");

printf("

****\n");

printf("

*\n");

printf("

*

\n");

printf("

****\n");

}

【程序7】

题目:输出特殊图案,请在c环境中运行,看一看,very

beautiful!

1.程序分析:字符共有256个.不同字符,图形不一样.

2.程序源代码:

#include

"stdio.h"

main()

{

char

a176,b219;

printf("%c%c%c%c%c\n",b,a,a,a,b);

printf("%c%c%c%c%c\n",a,b,a,b,a);

printf("%c%c%c%c%c\n",a,a,b,a,a);

printf("%c%c%c%c%c\n",a,b,a,b,a);

printf("%c%c%c%c%c\n",b,a,a,a,b);}

【程序8】

题目:输出9*9口诀.

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j,result;

printf("\n");

for

(i1;i<10;i++)

{

for(j1;j<10;j++)

{

resulti*j;

printf("%d*%d%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf("\n");/*每一行后换行*/

}

}

【程序9】

题目:要求输出国际象棋棋盘.

1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j;

for(i0;i<8;i++)

{

for(j0;j<8;j++)

if((i+j)%20)

printf("%c%c",219,219);

else

printf("

");

printf("\n");

}

}

【程序10】

题目:打印楼梯,同时在楼梯上方打印两个笑脸.

1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j;

printf("\1\1\n");/*输出两个笑脸*/

for(i1;i<11;i++)

{

for(j1;j<i;j++)

printf("%c%c",219,219);

printf("\n");

}

}

【程序11】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月

后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

1.程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21....

2.程序源代码:

main()

{

long

f1,f2;

int

i;

f1f21;

for(i1;i<20;i++)

{

printf("%12ld

%12ld",f1,f2);

if(i%20)

printf("\n");/*控制输出,每行四个*/

f1f1+f2;

/*前两个月加起来赋值给第三个月*/

f2f1+f2;

/*前两个月加起来赋值给第三个月*/

}

}

【程序12】

题目:判断101-200之间有多少个素数,并输出所有素数.

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数.

2.程序源代码:

#include

"math.h"

main()

{

int

m,i,k,h0,leap1;

printf("\n");

for(m101;m<200;m++)

{

ksqrt(m+1);

for(i2;i<k;i++)

if(m%i0)

{leap0;break;}

if(leap)

{printf("%-4d",m);h++;

if(h%100)

printf("\n");

}

leap1;

}

printf("\nthe

total

is

%d",h);

}

c语言考试填空题 求高手解答 【急】 100分!

1:当调用函数read从磁盘文件中读数据时,若函数的返回值为10,则表明读入了10个字符;若函数的返回值为0,则是();若函数的返回值为-1,则意味着(函数调用失败)。

2:设x是一个整数(16bit),若要通过x|y使x低8位置1,高8位不变,则y的八进制数是(c).

3:在C语言中,文件的存取是以(字节)为单位的,这种文件被称作(流)文件。

4:

若有定义:inte=1,f=4,g=2;floatm=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是(14).

5:下面程序运行结果是(abcdABCD)。

chars[20]=”abcd”;

char*ssp=s;

sp++;

puts(strcat(sp,”ABCD”));

6:

以下程序的运行结果是(1213).

structn{

intx;

charc;

};

main()

structna={10,‘x’};

func(a);

printf(%d,%c,a.x,a.c);

}

func(structnb)

{b.x=20;

b.c=’y’;

}

7:下面程序段的运行结果是(def\0ghi)。

harstr[]=”abc\0def\0ghi”,*p=str;

printf(“%s”,p+5);

8:当运行以下程序时,从键盘输入book<CR>

book<CR>

(<CR>表示回车,表示空格),则下面程序段运行的结果是(book)。

chara1[80],a2[80],*s1=a1,*s2=a2;

gets(s1);gets(s2);

if(!strcmp(s1,s2))printf(“*”):

elseprintf(“#”);

printf(“%d”,strlen(strcat(s1,s2)));

9:若有以下定义,则计算表达式y+=y-=m*=y后y值是(my)

10:请读程序片段:

intm=20,n=025;

elseprintf(“nnn\n”)

以上程序片段的输出结果是().

计算机二级C语言100套上机填空题和改错题

南开二级C语言上机100题

1、改错题1

下列给定程序的功能是:读入一个整数(2<=k《=10000》,打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

*******************************

IsPrime(intn);——————去掉分号

{inti,m;

m=1;

for(i=2;i<n;i++)

******************************

if!(n%i)——————if(!(n%i))

{m=0;break;}

return(m);

}

main()

{intj,k;

clrscr();

printf("nPleaseenteranintegernumberbetween2and10000:");scanf("%d",&k);

printf("nnTheprimefactor(s)of%dis(are):",k);

for(j=2;j<=k;j++)

if((!(k%j))&&(IsPrime(j))printf("n%4d",j);

printf("n");

)

2、编程题1

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值行会,将低于平均分的分数放在below所指的数组中。

例如,但score数组的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该时4,below中的数据应为10、20、30、40。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intbelow[])

{

——————inti,k=0;floataver=0;

for(i=0;i<m;i++)

aver+=(score[i]);

aver/=m;

for(i=0;i<m;i++)

if(score[i]<aver)

{below[k]=score[i];

k++;

retern(k);}

}

main()

{inti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,80,90};

clrscr();

n=fun(score,9,below);

printf("nBelowtheaveragescoreare:");

for(i=0;i<n;i++)printf("%d",below[i]);

}

3、改错2

下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<studio.h>

#include<string.h>

****************************************

void;fun(char*p,char*q,char*c)——去分号

***************************************

{intk=1;——1改为0

***************************************

while(*p!=*q)——!=改为||

***************************************

{if(*p<*q)c[k]=*q;——小于号改为小于等于

elsec[k]=*p;

if(*p)p++;

if(*q)q++;

k++;

}

}

main()

{chara[10]="aBCDeFgh",b[10]="ABcd",c[80]={''};

fun(a,b,c);

printf("Thestringa:");puts(a);

printf("Thestringb:");puts(b);

printf("Theresult:");puts(c);

}

4、改错3

下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<stdio.h>

#include<conio.h>

voidfun(char*s)

{inti,j;

for(i=0,j=0;s[i]!='\0';i++)

****************************************

if(s[i]>='0'&&s[i]<='9')

s[j]=s[i];——————j改为j++

***************************************

s[j]="\0";——————s[j]='\0'

}

main()

{charitem[80];

clrscr();

printf("\nEnterastring:");gets(item);

printf("\n\nThestringis:\%s\n",item);

fun(item);

printf("\n\nThestringofchangingis:\%s\n",item);

}

5、改错4

下列给定程序中,函数fun的功能是:分别铜级字符串中大写字母和小写字母的个数。例如,给字符串s输入:AAaaBBb123CCccccd,则应该输出结果:upper=6,lower=8。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

**********************************

voidfun(char*s,inta,intb)————a应为*a,b应为*b

{while(*s)

{if(*s>='A'&&*s<='Z')

***********************************

a++;————(*a)++;

if(*s>='a'&&*s<='z')

************************************

b++;————(*b)++;

s++;

}

}

main()

{chars[100];intupper=0,lower=0;

clrscr();

printf("nPleaseastring:");gets(s);

fun(s,&upper,&lower);

printf("nupper=%dlower=%dn",upper,lower);

}

6、改错5

假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<stdio.h>

#defineN20

fun(int*a,intn,intx)

{intp=0,i;

a[n]=x;

while(x!=a[p])

p=p+1;

if(p==n)return-1;

else

{for(i=p;i<n;i++)

******************************************

a[i+1]=a[i];————a[i]=a[i+1];

returnn-1;

}

}

main()

{intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;

n=10;

printf("Theoriginaldata:n");

for(i=0;i<n;i++)printf("%5d",w[i]);

printf("nInputx(todelete):");scanf("%d",&x);

printf("Delete:%dn",x);

n=fun(w,n,x);

if(n==-1)printf("***Norbefound!***nn");

else

{printf("Thedataafterdeleted:n");

for(i=0,i<n;i++)printf("%5d",w[i]);printf("nn");

}

}

7、改错6

下列给定程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。t=1-1/2×2-1/3×3-…-1/m×m

例如,若m中的值为5,则应输出:0.536389。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{doubley=1.0;

inti;

***************************************

for(i=2;i<m;i++)————“<”改为“<=”

***************************************

y-=1/(i*i);————“1”改为“1.0”

return(y);

}

main()

{intn=5;

clrscr();

printf("\nRheresultis%1f\n",fun(n));

}

8、改错7

下列给定程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

#defineN20

voidfun(inta[],intn)

{inti,j,t,p;

for(j=0;j<n-1;j++)

***************************

{p=j——加上“;”

for(i=j;i,n;i++)——j改为j+1

if(a[i]<a[p])

*********************************

p=j;——j改为i

t=a[p];a[p]=a[j];a[j]=t;

}

}

main()

{

inta[N]={9,6,8,3,-1},i,m=5;

printf("排序前的数据:");

for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");

fun(a,m);

printf("排序后的数据:");

for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");

}

9、改错8(2004.7.27)

下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为eABCDFGH。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

fun(char*p)

{charmax,*q;inti=0;

max=p[i];

while(p[i]!=0)

{if(max<p[i])

{max=p[i];

*******************************

p=q+i;——改为q=p+i;

}

i++;

}

******************************

while(q<p)——q<p改为q>p

{*q=*(q-1);

q--;

}

p[0]=max;

}

main()

{charstr[80];

printf("Enterastring:");gets(Str);

printf("\nTheoriginalstring:");puts(Str);

fun(str);

printf("\nThestringagtermoving:");puts(str);ptintf("\n\n");

}

10、改错9(2004.7.27)

下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:

80.5607290.59851.58864

则低于平均分的学生人数为4(平均分为:75.5625)。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

#defineN20

intfun(float*s,intn,float*aver)

{floatave,t=0.0;

intcount=0,k,i;

for(k=0;k<n;k++)

*******************************

t=s[k];——t+=s[k];

ave=t/n;

for(i=0;i<n;i++)

if(s[i]<ave)count++;

******************************

*aver=&ave;——去掉&

returncount;

}

main()

{floats[30],aver;

intm,i;

clrscr();

printf("nPleaseenterm:";scanf("%d",&m);

printf("nPleaseenter%dmark:n",m);

for(i=0;i<m;i++)scanf("%f",s+i);

printf("nThenumberofstudents:%dn",fun(s,m,&aver));

printf("Ave=%fn",aver);

)

11、改错10(2004.8.1)

下列给定程序中,函数fun的功能是:将s所指字符串中出现的t1所指子串全部替换成t2所指子字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。例如,当s所指字符产中的内容为abcdabfab,t1所指子串中的内容为ab,t2所指子串中的内容为99时,结果,在2

所指的数组中内容应为99cd99f99。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(char*s,char*t1,char*t2,char*w)

{

inti;char*p,*r,*a;

strcpy(w,s);

while(*w)

{p=w;r=t1;

********************************************

while(r)——r改为*r

if(*r==*p){r++;p++}

elsebreak;

if(*r=='')

{a=w;r=t2;

*******************************************

while(*r){*a=*r;a++;r++}——改为while(*r){*a=*r;a++;r++;}

w+=strlen(t2);

}

elsew++;

}

}

main()

{

chars[100],t1[100],t2[100],w[100];

clrscr();

printf("nPleaseenterstringS:");scanf("%s",s);

printf("nPleaseenterstringt1:");scanf("%s",t1);

printf("nPleaseenterstringt2:");scanf("%s",t2);

if(strlen(t1)==strlen(t2))

{

printf("nTheresultis:%sn",w);

}

elseprintf("Error:strlen(t1)!=strlen(t2)n");

}

12、改错11(2004.8.1)

给定程序MODI1.C中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。

请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

intfun()

{

inta[3][3],sum;

inti,j;

***********************************

_____;——sum=1;

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

*****************************************

scanf(〃%d〃a[i][j]);——scanf("%d",&a[i][j]);

}

for(i=0;i<3;i++)

sum=sum*a[i][i];

printf(〃Sum=%dn〃,sum);

}

main()

{fun();}

13、改错12(8.1)

下列程序的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。

请改正程序中的语法错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include〃conio.h〃

#include〃stdio.h〃

************************************************

IsPrime(intn);——IsPrime(intn)

{inti,m;

m=1;

for(i=2;i<n/i++)

*********************************************

if!(n%i)——if(!(n%i))

{m=0;break;}

return(m);

}

main()

{intj,k;

clrscr();

printf(〃nPeaseenteranintegernumberbetween2and10000:〃);scanf(〃%d〃,&k);

printf(〃nnTheprimefactor(s)of%dis(are):〃,k);

for(j=2;j<=k;j++)

if((!k%j))&&(IsPrime(j))}printf(〃n%4d〃,j);

printf(〃n〃);

}

14、改错13(8.4)

下列程序中,fun函数的功能是:根据形参m,计算如下公式的值。

t=1+1/2+1/3+1/4+…+1/m

例如,若输入5,则应输出2.283333。

请改正程序中的语法错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{

doublet=1.0;

inti;

for(i=2;i<=m;i++)

*******************************************

t+=1.0/k;——k改为i

*********************************************

____________;——填returnt;

}

main()

{

intm;

clrscr();

printf(“nPleaseenter1integernumber:”);

scanf(“%d”,&m);

printf(“nTheresultis%1fn”,fun(m));

}

15、改错14(8.4)

下列程序中,fun和funx函数的功能是:

用二分法求方程2x×x×x-4x×x+3x-6=0的一个根,并要求绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得的一个根为2.000。

请改正程序中的语法错误,使程序能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

#include<math.h>

doublefunx(doublex)

{

return(2*x*x*x-4*x*x+3*x-6);

}

doublefun(doublem,doublen)

{

**************************************

intr;——改为doubler;

r=(m+n)/2;

**********************************

while(fabs(n-m)<0.001)——"<"改为">="

{if(funx(r)*funx(n)<0m=r;

elsen=r;

r=(m+n)/2;

)

returnr;

)

main()

{

doublem,n,root;

printf("Entermn:n");scanf("%1f%1f",&m,&n);

root=fun(m,n);

printf("root=%6.3fn",root);

}

16、改错15(8.5)

下列给定程序中,函数fun的功能是:判断字符ch是否与str所指串中的某个字符相同;若相同,则什么也不做,若不同,则将器插在串的最后。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

#include<string.h>

**********************************

voidfun(charstr,charch)------------------------1

{while(*str&&*str!=ch)str++;

**********************************

if(*str==ch)------------------------------------2

{str[0]=ch;

*********************************

str[1]='0';------------------------------------3

}

}

main()

{chars[81],c;

clrscr();

printf("nPleaseenterastring:n");gets(s)

printf("nPleaseenterthecharactertosearch:");

c=getchar();

fun(s,c);

printf("nTheresultis%sn",s);

}

15题Answer:

1.voidfun(char*str,charch)

2.if(*str=='

17、改错16(8.5)

下列给定程序中,函数Creatlink的功能是:创建带头结点的单项链表,并为各结点数据域赋0到m-1的值。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

NODE*Creatlink(intn,intm)

{NODE*h=Null,*p,*s;

inti;

s=(NODE*)malloc(sizeof(NODE));

********************************************

h=p;-------------------------------------1

p->next=NULL;

for(i=1;i<=n;i++)

{s=(NODE*)malloc(sizeof(NODE));

********************************************

s->data=rand()%m;-----------------------2

s->next=p->next;

p->next=s;

p=p->next;

}

********************************************

returnp;--------------------------------3

}

outlink(NODE*h)

{NODE*p;

p=h->next;

printf("nnTHELIST:nnHEAD");

while(p)

{printf("->%d",p->data);

p=p->next;

}

printf("n");

}

main()

{NODE*head;

clrscr();

head=Creatlink(8,22);

outlink(head);

}

16题Answer:

1.h=p=s;

2.s->data=rand()%(m-1);

3.returnh;

18、改错17(8.5)

下列给定程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

intfun(intk)

{intm=0,mc=0,j;

while((k>=2)&&(mc<10))

*********************************

{if((k%13=0)||(k%17=0))-------------------1

{m=m+k;mc++;}

k--;

}

returnm;

**********************************

_____________-------------------------------2

main()

{clrscr();

printf("%dn",fun(500));

}

17题Answer:

1.if((k%13==0)||(k%17==0))

2.}

19、改错18(8.5)

下列给定程序中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65b=60

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

********************************

voidfun(inta,b)--------------------------1

{intt;

*******************************

t=b;b=a;a=t;-------------------------------2

}

main()

{inta,b;

clrscr();

printf("Entera,b:");scanf("%d%d",&a,&b);

fun(&a,&b);

printf("a=%db=%dn",a,b);

}

18题Answer:

1.voidfun(int*a,int*b)

2.t=*b;*b=*a;*a=t;

20、改错19(8.5)

下列给定程序中,函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,一次构成一个新数放在t中。例如,当s中的数为7654321时,t是的数为642。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<conio.h>

#include<stdio.h>

********************************

voidfun(longs,longt)--------------------------1

{longsl=10;

s/=10;

*t=s%10;

****************************

while(s<0)--------------------------------------2

{s=s/100;

*t=s%10*sl+*t;

sl=sl*10;

}

}

main()

{longs,t;

clrscr();

printf("nPleaseenters:");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%ldn",t);

}

19题Answer:

1.voidfun(longs,long*t)

2.while(s>0)

21、改错20(8.5)

N个有序整数数列已放在一堆数组中,下列给定程序中,函数fun的功能是:利用折半查找算法找整数m再数组中的位置。若找到,则返回其下标值;反之,则返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。

请改正程序中的错误,使程序能得出正确的结果。

注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!

试题程序

#include<stdio.h>

#defineN10

************************************

voidfun(inta[],intm)--------------------------1

{intlow=0,high=N-1,mid;

while(low<=high)

{mid=(low+high)/2;

if(m<a[mid])

high=mid-1;

***************************************

elseif(m>=a[mid])----------------------------2

low=mid+1;

elsereturn(mid);

}

return(-1);

}

main()

{inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;

printf("a数组中的数据如下:");

for(i=0;i<N;i++)printf("%d",a[i]);

printf("Enterm:");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!\n");

}

20题Answer:

1.intfun(inta[],intm)

2.elseif(m>a[mid])

关于c语言入门基础100题,c语言入门基础100题编程的介绍到此结束,希望对大家有所帮助。