c语言编程题库100题及答案(c语言上机考试题库)

admin 268 0

大家好,感谢邀请,今天来为大家分享一下c语言编程题库100题及答案的问题,以及和c语言上机考试题库的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

一、c语言经典100题,怎么写

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

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

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

题目:企业发放的奖金根据利润提成.利润(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.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型.

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

bonus1100000*0.1;bonus2bonus1+100000*0.75;

bonusbonus10+(i-1000000)*0.01;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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);}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二、C语言编程100例里面的题目,谁给我说下这题的思路

约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。假定在圈子里前K个为好人,后K个为坏人,你的任务是确定这样的最少M,使得所有的坏人在第一个好人之前被杀掉。

*(p+i)=i+1;//产生初始值 1,2,3...,n

while(m<n-1)//当有n-1个人出圈了,就停止循环,即找到了最后一个出圈的人

if(*(p+i)!=0) k++;//开始计数,如果序号为(i+1)的人没有退出圈子(即他的值不为0时),则计数

if(k==3)//第3个人,则退出圈子,将他那个数组元素清0.

k=0;//计数值清0,重新计算剩下的第3个人的位置。

m++;//计算共有多少人出了圈子。

i++;//数组元素偏移量向后移一位->*(p+i)

if(i==n) i=0;//如果数组元素序号超过当前总人数,则循环一圈,从第1个人开始

while(*p==0) p++;//找出剩下的那个人的序号,不为0的就是他!

printf("%d is left\n",*p);//输出结果。OK。

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

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

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

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

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

IsPrime(int n);——————去掉分号

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

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

printf("nPlease enter an integer number between 2 and 10000:");scanf("%d",&k);

printf("nnThe prime factor(s) of%d is(are):",k);

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

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

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

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

int fun(int score[],int m, int below[])

——————int i,k=0;float aver=0;

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

printf("nBelow the average score are:");

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

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

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

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

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

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

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

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

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

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

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

printf("The string a:"); puts(a);

printf("The string b:"); puts(b);

printf("The result:"); puts(c);

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

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

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

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'

printf("\nEnter a string:");gets(item);

printf("\n\nThe string is:\%s\n",item);

printf("\n\nThe string of changing is:\%s\n",item);

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

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

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

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

void fun(char*s,int a, int b)————a应为*a,b应为*b

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

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

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

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

{ char s[100];int upper=0,lower=0;

printf("nPlease a string:");gets(s);

printf("n upper=%d lower=%dn",upper,lower);

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

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

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

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

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

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

printf("The original data:n");

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

printf("nInput x(to delete):");scanf("%d",&x);

if(n==-1) printf("***Nor be found!***nn");

{printf("The data after deleted:n");

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

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

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

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

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

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

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

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

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

printf("\nRhe result is%1f\n",fun(n));

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

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

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

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

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

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

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

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

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

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

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

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

printf("Enter a string:");gets(Str);

printf("\nThe original string:");puts(Str);

printf("\nThe string agter moving:");puts(str);ptintf("\n\n");

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

80.5 60 72 90.5 98 51.5 88 64

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

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

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

int fun(float*s,int n,float*aver)

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

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

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

printf("nPlease enter%d mark:n",m);

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

printf("nThe number of students:%dn",fun(s,m,&aver));

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

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

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

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

int fun(char*s, char*t1,char*t2,char*w)

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

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

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

char s[100],t1[100],t2[100],w[100];

printf("nPlease enter string S:");scanf("%s",s);

printf("nPlease enter string t1:");scanf("%s",t1);

printf("nPlease enter string t2:");scanf("%s",t2);

printf("nThe result is:%sn",w);

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

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

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

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

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

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

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

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

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

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

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

IsPrime( int n);——IsPrime(int n)

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

printf(〃nPease enter an integer number between 2 and 10000:〃); scanf(〃%d〃,&k);

printf(〃nn The prime factor(s) of% d is( are):〃, k);

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

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

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

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

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

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

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

printf(“nPlease enter 1 integer number:”);

printf(“nThe result is%1fn”,fun(m));

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

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

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

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

double fun(double m, double n)

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

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

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

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

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

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

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

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

void fun(char str, char ch)------------------------1

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

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

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

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

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

printf("nPlease enter a string:n");gets(s)

printf("nPlease enter the character to search:");

printf("nThe result is%sn",s);

1. void fun(char*str, char ch)

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

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

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

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

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

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

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

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

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

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

return p;--------------------------------3

printf("nnTHE LIST:nn HEAD");

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

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

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

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

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

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

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

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

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

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

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

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

void fun(int a,b)--------------------------1

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

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

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

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

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

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

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

void fun(long s, long t)--------------------------1

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

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

printf("The result is:%ldn",t);

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

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

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

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

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

void fun(int a[],int m)--------------------------1

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

else if(m>=a[mid])----------------------------2

{int i,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("Enter m:");scanf("%d",&m);

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

else printf("Not be found!\n");

OK,关于c语言编程题库100题及答案和c语言上机考试题库的内容到此结束了,希望对大家有所帮助。