求C语言练习题目!!!!

时间:2021-04-18 00:26:53
想深入的学习C,希望大家给说说可以用C写的小项目,最好把题目要求都说下。。。谢谢!!!!!!

12 个解决方案

#1


chinaitlab.com上面会有 也可以看看开源代码

#2


找C语言解惑和C语言名题精选百则技巧篇的电子书下载下来,然后上机做做看吧

#3


翻转单词

/*

  C++写一个函数 Reverse(char *s)

要求调用此函数以后实现 逆序输出
如: s="this is a sentense"
调用完函数以后 变为 “sentense a is this”

  */






//翻转一个单词
void Reverse1(char* begin,char* end)
{



char temp;

while(begin<end)
{
temp=*begin;
*begin=*end;
*end=temp;
begin++;
end--;
}
}


void Reverse2(char*s)
{

//首先将整个串翻转

char* tail;

tail=s;

while(*tail!='\0') tail++;

tail--;   //

Reverse1(s,tail);

//开始翻转每个单词

char* begin,*end;

begin=end=s;

while( (*begin!='\0') && (*end!='\0') )
{

    //开始查找单词开头,查找单词开头要注意逻辑

while( (*begin==' ') &&(*begin!='\0') ) begin++;

end=begin;

//开始查找单词结尾

while( (*end!=' ') && (*end!='\0') ) end++;

end--;

//找到了一个单词的开头和结尾,翻转之

char* p1,*p2;

p1=begin;

p2=end;

     Reverse1(p1,p2);

 //下一个单词..............

 begin=end+1;


}

}  //end Reverse2



楼主给分, 我没分了,没法发帖 。。。。。。。。


这道题 还是面试题目,   你可以做一下。。。。。。。。。。。。。


#4


有兴趣的话可以去看下gtk+

#5


可以自己编个俄罗斯方块玩玩

#6


书后有很多习题。

#7


杭电acm上面的题很经典的,第十一页100道题,做完会有很大收获的。

#8


引用 7 楼 xxwy89 的回复:
杭电acm上面的题很经典的,第十一页100道题,做完会有很大收获的。



好像得注册。。。

#9


编程题(初级)
1-1/3+1/5-1/7+……直到某一项的绝对值小于10的-6次方
 
我们用一个正整数列来表示一段地方的高度,当一段地方的高度为一个逐一上升的序列时,
我们称它为一个阶梯,例如 4、5、6、7、8 是一个长度为 5 的阶梯。现在给定一个正整数列,
请找出它第一个最长的阶梯,并将其输出。如果一个阶梯也没有,输出“No”。
运行结果示例:
请输入数列的长度:8
请输入数列:2 3 2 3 4 4 5 6
结果为 2 3 4

    1、输入20个数,求出它们的最大值、最小值和平均值。
    2、在1——500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数;
    3、如果一个数从左边读和右边读都是同一个数,就称为回文数,例如686就是一个回文数。编程求1000以内所有的回文数。
    4、已知数列1、5、12、22、35、。。。。编程求该数列的前50项。
    5、输入一个大于1的整数,打印出它的素数分解式。如输入75,则打印:"75=3*5*5"。
1、输入10个正整数,计算它们的和,平方和;
2、输入20个整数,统计其中正、负和零的个数;
4、输出1——999中能被3整除,且至少有一位数字是5的数;
8、有一个六位数,其个位数字7,现将个位数字移至首位(十万位),而其余各位数字顺序不变,得到一个新的六位数,假如新数为旧数的4倍,求原来的六位数。
10、有这样的一个六位数字labcde,将其乘以3后变成abcdel,编程求这个数。
11、试找出6个小于160而成等差数列的素数。

1、编写程序,计算并输出下面级数前n项(n=20)的部分和。
  1*2*3+2*3*4+3*4*5+……+n*(n+1)*(n+2)+…
2、编写程序,用双循环结构输出下列三角形:
  1 2 3 4 5 6 7
  1 2 3 4 5
  1 2 3
  1
3、输入10个整数,将它们从小到大排序后输出,并输出每个整数输入时的序号。
4、编写程序,计算下面级数前n项中(n=50)奇数项的和,并输
出该级数最后两项之差的绝对值。
  1*2*3+2*3*4+3*4*5+……+n*(n+1)*(n+2)+…
5、编写程序,计算并输出下面级数前n项(n=50)中奇数项的和。
  1*2+2*3+3*4+4*5+……+n*(n+1)+…
6、写程序打印出以字符"*”组成的等腰三角形,行数为8,每行字符数分别为1、3、5、7、9、11、13和15的图案

7、一个球从100m高度*落下,每次落地后反跳回原高度的一半,再落下,再反弹,求它在第10次落地时,共经过多少米?第10次反弹多高?

8、编号1到17共17个人坐成一圈,从1号开始报数,1、2、3、1、2、3……,报3的人出圈,请问最后出圈的人编号是多少?
 

1、编写程序,其中包括一个函数,此函数的功能是:对一个长度为N 的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M<=80,K<=N)。例如输入字符串"We are poor students.",利用此函数进行删除"poor"的处理,输出处理后的字符串是"We are students."。
2、 编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。
3、规定一个工人工作时间每个月160小时,每小时工资为10元,如果加班的话,每小时增加5元,请编程计算并打印此工人一个月的工资,要求由键盘输入工作时间(每月最多31天,每天最多15小时)。
4、百钱买百鸡。公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元钱买100只鸡,问公鸡、母鸡、小鸡各能买多少只?共有多少种买法?
5、编程实现下列字符串处理函数的功能:比较字符串s1和s2,若s1>s2,输出正数;若s1=s2,输出0;若s1<s2,输出负数.正数和负数的绝对值是相比较的两个字符串相应字符的ASCII码的差值。
6、编程实现下列字符串处理函数的功能:复制字符串,注意’\0’
7、编程输出200以内的素数,每输出8个数换一行。
8、编程序,按下列公式计算e的值(精度为1e-6):e=1+1/1!+1/2!+1/3!+1/4!+…+1/n!
9、编写程序,输入若干个字符串,将其按从小到大的顺序排列输出。
10、编写程序计算两个矩阵相加的和。
11、编写一个程序,计算一个整数的各位数字之和,如输入2568,该程序计算并显示2+5+6+8的值。
12、编写一个程序判断从键盘输入的字符串是否回文(即正读反读完全一样,如”madam”)。
13、从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+…(共n项)的和。例a=2,n=4,则sum=2+22+222+2222.
14、从键盘输入两个数a,b,用欧几里德算法求其最大公约数和最小公倍数。
15、歌手大奖赛有10名评委打分,去掉一个最高分、去掉一个最低分,求选手的平均分。
16、将数组a中n个整数按相反顺序存放。
17、输出2000年到2500年的每一年是否闰年。每输出5个年号换一行。
18、用选择法对10个整数按由小到大的顺序排序。
19、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到4的人退出圈子,问最后留下的是原来第几号的那位。
20、运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:
s<250km 没有折扣   
250≤s<500 2%折扣   
500≤s<1000 5%折扣   
1000≤s<2000 8%折扣   
2000≤s<3000 10%折扣   
3000≤s 15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:f=p*w*s*(1-d)

 

1、从键盘输入一个正整数,例如输入3的时候,输出如下:
  1 1 1 1 1
 1 2 2 2 1
 1 2 3 2 1
 1 2 2 2 1
 1 1 1 1 1

2、根据下图的规律(规律:最前面一个数、之后的2个数、之后的3个数、之后的4位数。。。),当键盘输入一个数时,求出这个数的位置。例如输入:5 输出结果应该是:11
1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 ???

3、从键盘输入一个数n,输出到第n项为止下面的数字列
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 ???

4、从键盘输入a, b, c, d 4个正整数,求他们的分数相加。格式如下:
    a    c      f
   ―― + ――  = e ――   
    b    d     g

   
5、判断你爱一个人有多深的小游戏,输入一个人的名字的拼音,如果名字中包含“A, I, U, E 或 O”则非别换成“1, 2, 3, 4 和 5”,之后,把相邻的2个数相加,写在下一行的2个数中间的位置,直至只剩下2个数为止,输出这个图形。
  例:TAROU HANAKO
    1 5 3 1 1 5
     6 8 4 2 6
      4 2 6 8
       6 8 4
        4 2

   Love you=42%
 

在txt文档中有如下内容:
学号 姓名 成绩
2004101 张大志 89
2004102 杨小敏 65
2004103 李兵 76  
2004104 周星华 60
2004105 王小青 82
2004106 陈江 70
2004107 刘慧姗 85
2004108 张真 80
2004109 林华 70
2004110 郭云风 62
要求把每行信息存入一个结构体对象,再对成绩排名,把结果保存到另一个txt文档中,结果应该是:
2004101 张大志 89
2004107 刘慧姗 85
2004105 王小青 82
2004108 张真 80
2004103 李兵 76  
2004106 陈江 70
2004109 林华 70
2004102 杨小敏 65
2004110 郭云风 62
2004104 周星华 60
 

1. 某公司采用公用电话传递数据,数据是4位的整数,在传递过程中是加密的.
  加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换.
    
 [要求]编写一个程序,用于接收一个4位的整数,并且打印输出加密后的数


2.某百货商场当日消费积分最高的6位顾客,他们积分分别是:18,89,7,36,13,2从这组数中找出最少积分数以及它在数组中的原始位置

[提示]先声明数组存储这组积分数,然后求最小值以及所在的下标

 

有些字符串,如果满足下面的性质,则称为成对的字符串:
a. 所有的字符在字符串中出现偶数次
b. 每一对相同的字符之间不会有出现奇数次的字符
现在给你一些字符串,请判断这些字符串是否为成对的字符串。
输入:
第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例。每行为一个字符串(长度不超过1000个字符)。
输出:
每行输出一个测试用例的结果。如果是,输出Yes,否则输出No。
Sample Input
2  
aAbbAaaabbcc
abcdefghijklmn
Sample Output
Yes
No
 

char * p1 = "asdfghj";
char * p2 = "azxvch";
要求将P2里面出现的P1的 字符删除,再将P2接到P1后面
结果应该是 “asdfghjzxvc"

 

n个人围成一圈,按如下方式进行报数
1;1,2;1,2,3;1,2,3,4;...
给定正整数n,及一个正整数m,求首次报数为m的是第几个人。例如当n=8,m=4时,首次报数为4的是第2个人。
Input
输入文件中包含多个测试数据。每个测试数据占一行,为两个正整数n和m,1<=n,m<=200。最后一行为0 0,表示输入结束。
Output
对每个测试数据,输出是第几个人首次报数为m。
Sample Input
8 4
10 5
0 0
Sample Output
2
5


#10


OH~~~~~·
楼上的题可以一个一个的做

#11


http://topic.csdn.net/u/20110729/12/9973e5a4-a414-4714-871f-905a85612297.html

#12


引用 11 楼 zscedu 的回复:
http://topic.csdn.net/u/20110729/12/9973e5a4-a414-4714-871f-905a85612297.html
这个也不错的哦!

#1


chinaitlab.com上面会有 也可以看看开源代码

#2


找C语言解惑和C语言名题精选百则技巧篇的电子书下载下来,然后上机做做看吧

#3


翻转单词

/*

  C++写一个函数 Reverse(char *s)

要求调用此函数以后实现 逆序输出
如: s="this is a sentense"
调用完函数以后 变为 “sentense a is this”

  */






//翻转一个单词
void Reverse1(char* begin,char* end)
{



char temp;

while(begin<end)
{
temp=*begin;
*begin=*end;
*end=temp;
begin++;
end--;
}
}


void Reverse2(char*s)
{

//首先将整个串翻转

char* tail;

tail=s;

while(*tail!='\0') tail++;

tail--;   //

Reverse1(s,tail);

//开始翻转每个单词

char* begin,*end;

begin=end=s;

while( (*begin!='\0') && (*end!='\0') )
{

    //开始查找单词开头,查找单词开头要注意逻辑

while( (*begin==' ') &&(*begin!='\0') ) begin++;

end=begin;

//开始查找单词结尾

while( (*end!=' ') && (*end!='\0') ) end++;

end--;

//找到了一个单词的开头和结尾,翻转之

char* p1,*p2;

p1=begin;

p2=end;

     Reverse1(p1,p2);

 //下一个单词..............

 begin=end+1;


}

}  //end Reverse2



楼主给分, 我没分了,没法发帖 。。。。。。。。


这道题 还是面试题目,   你可以做一下。。。。。。。。。。。。。


#4


有兴趣的话可以去看下gtk+

#5


可以自己编个俄罗斯方块玩玩

#6


书后有很多习题。

#7


杭电acm上面的题很经典的,第十一页100道题,做完会有很大收获的。

#8


引用 7 楼 xxwy89 的回复:
杭电acm上面的题很经典的,第十一页100道题,做完会有很大收获的。



好像得注册。。。

#9


编程题(初级)
1-1/3+1/5-1/7+……直到某一项的绝对值小于10的-6次方
 
我们用一个正整数列来表示一段地方的高度,当一段地方的高度为一个逐一上升的序列时,
我们称它为一个阶梯,例如 4、5、6、7、8 是一个长度为 5 的阶梯。现在给定一个正整数列,
请找出它第一个最长的阶梯,并将其输出。如果一个阶梯也没有,输出“No”。
运行结果示例:
请输入数列的长度:8
请输入数列:2 3 2 3 4 4 5 6
结果为 2 3 4

    1、输入20个数,求出它们的最大值、最小值和平均值。
    2、在1——500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数;
    3、如果一个数从左边读和右边读都是同一个数,就称为回文数,例如686就是一个回文数。编程求1000以内所有的回文数。
    4、已知数列1、5、12、22、35、。。。。编程求该数列的前50项。
    5、输入一个大于1的整数,打印出它的素数分解式。如输入75,则打印:"75=3*5*5"。
1、输入10个正整数,计算它们的和,平方和;
2、输入20个整数,统计其中正、负和零的个数;
4、输出1——999中能被3整除,且至少有一位数字是5的数;
8、有一个六位数,其个位数字7,现将个位数字移至首位(十万位),而其余各位数字顺序不变,得到一个新的六位数,假如新数为旧数的4倍,求原来的六位数。
10、有这样的一个六位数字labcde,将其乘以3后变成abcdel,编程求这个数。
11、试找出6个小于160而成等差数列的素数。

1、编写程序,计算并输出下面级数前n项(n=20)的部分和。
  1*2*3+2*3*4+3*4*5+……+n*(n+1)*(n+2)+…
2、编写程序,用双循环结构输出下列三角形:
  1 2 3 4 5 6 7
  1 2 3 4 5
  1 2 3
  1
3、输入10个整数,将它们从小到大排序后输出,并输出每个整数输入时的序号。
4、编写程序,计算下面级数前n项中(n=50)奇数项的和,并输
出该级数最后两项之差的绝对值。
  1*2*3+2*3*4+3*4*5+……+n*(n+1)*(n+2)+…
5、编写程序,计算并输出下面级数前n项(n=50)中奇数项的和。
  1*2+2*3+3*4+4*5+……+n*(n+1)+…
6、写程序打印出以字符"*”组成的等腰三角形,行数为8,每行字符数分别为1、3、5、7、9、11、13和15的图案

7、一个球从100m高度*落下,每次落地后反跳回原高度的一半,再落下,再反弹,求它在第10次落地时,共经过多少米?第10次反弹多高?

8、编号1到17共17个人坐成一圈,从1号开始报数,1、2、3、1、2、3……,报3的人出圈,请问最后出圈的人编号是多少?
 

1、编写程序,其中包括一个函数,此函数的功能是:对一个长度为N 的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M<=80,K<=N)。例如输入字符串"We are poor students.",利用此函数进行删除"poor"的处理,输出处理后的字符串是"We are students."。
2、 编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。
3、规定一个工人工作时间每个月160小时,每小时工资为10元,如果加班的话,每小时增加5元,请编程计算并打印此工人一个月的工资,要求由键盘输入工作时间(每月最多31天,每天最多15小时)。
4、百钱买百鸡。公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元钱买100只鸡,问公鸡、母鸡、小鸡各能买多少只?共有多少种买法?
5、编程实现下列字符串处理函数的功能:比较字符串s1和s2,若s1>s2,输出正数;若s1=s2,输出0;若s1<s2,输出负数.正数和负数的绝对值是相比较的两个字符串相应字符的ASCII码的差值。
6、编程实现下列字符串处理函数的功能:复制字符串,注意’\0’
7、编程输出200以内的素数,每输出8个数换一行。
8、编程序,按下列公式计算e的值(精度为1e-6):e=1+1/1!+1/2!+1/3!+1/4!+…+1/n!
9、编写程序,输入若干个字符串,将其按从小到大的顺序排列输出。
10、编写程序计算两个矩阵相加的和。
11、编写一个程序,计算一个整数的各位数字之和,如输入2568,该程序计算并显示2+5+6+8的值。
12、编写一个程序判断从键盘输入的字符串是否回文(即正读反读完全一样,如”madam”)。
13、从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+…(共n项)的和。例a=2,n=4,则sum=2+22+222+2222.
14、从键盘输入两个数a,b,用欧几里德算法求其最大公约数和最小公倍数。
15、歌手大奖赛有10名评委打分,去掉一个最高分、去掉一个最低分,求选手的平均分。
16、将数组a中n个整数按相反顺序存放。
17、输出2000年到2500年的每一年是否闰年。每输出5个年号换一行。
18、用选择法对10个整数按由小到大的顺序排序。
19、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到4的人退出圈子,问最后留下的是原来第几号的那位。
20、运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:
s<250km 没有折扣   
250≤s<500 2%折扣   
500≤s<1000 5%折扣   
1000≤s<2000 8%折扣   
2000≤s<3000 10%折扣   
3000≤s 15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:f=p*w*s*(1-d)

 

1、从键盘输入一个正整数,例如输入3的时候,输出如下:
  1 1 1 1 1
 1 2 2 2 1
 1 2 3 2 1
 1 2 2 2 1
 1 1 1 1 1

2、根据下图的规律(规律:最前面一个数、之后的2个数、之后的3个数、之后的4位数。。。),当键盘输入一个数时,求出这个数的位置。例如输入:5 输出结果应该是:11
1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 ???

3、从键盘输入一个数n,输出到第n项为止下面的数字列
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 ???

4、从键盘输入a, b, c, d 4个正整数,求他们的分数相加。格式如下:
    a    c      f
   ―― + ――  = e ――   
    b    d     g

   
5、判断你爱一个人有多深的小游戏,输入一个人的名字的拼音,如果名字中包含“A, I, U, E 或 O”则非别换成“1, 2, 3, 4 和 5”,之后,把相邻的2个数相加,写在下一行的2个数中间的位置,直至只剩下2个数为止,输出这个图形。
  例:TAROU HANAKO
    1 5 3 1 1 5
     6 8 4 2 6
      4 2 6 8
       6 8 4
        4 2

   Love you=42%
 

在txt文档中有如下内容:
学号 姓名 成绩
2004101 张大志 89
2004102 杨小敏 65
2004103 李兵 76  
2004104 周星华 60
2004105 王小青 82
2004106 陈江 70
2004107 刘慧姗 85
2004108 张真 80
2004109 林华 70
2004110 郭云风 62
要求把每行信息存入一个结构体对象,再对成绩排名,把结果保存到另一个txt文档中,结果应该是:
2004101 张大志 89
2004107 刘慧姗 85
2004105 王小青 82
2004108 张真 80
2004103 李兵 76  
2004106 陈江 70
2004109 林华 70
2004102 杨小敏 65
2004110 郭云风 62
2004104 周星华 60
 

1. 某公司采用公用电话传递数据,数据是4位的整数,在传递过程中是加密的.
  加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换.
    
 [要求]编写一个程序,用于接收一个4位的整数,并且打印输出加密后的数


2.某百货商场当日消费积分最高的6位顾客,他们积分分别是:18,89,7,36,13,2从这组数中找出最少积分数以及它在数组中的原始位置

[提示]先声明数组存储这组积分数,然后求最小值以及所在的下标

 

有些字符串,如果满足下面的性质,则称为成对的字符串:
a. 所有的字符在字符串中出现偶数次
b. 每一对相同的字符之间不会有出现奇数次的字符
现在给你一些字符串,请判断这些字符串是否为成对的字符串。
输入:
第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例。每行为一个字符串(长度不超过1000个字符)。
输出:
每行输出一个测试用例的结果。如果是,输出Yes,否则输出No。
Sample Input
2  
aAbbAaaabbcc
abcdefghijklmn
Sample Output
Yes
No
 

char * p1 = "asdfghj";
char * p2 = "azxvch";
要求将P2里面出现的P1的 字符删除,再将P2接到P1后面
结果应该是 “asdfghjzxvc"

 

n个人围成一圈,按如下方式进行报数
1;1,2;1,2,3;1,2,3,4;...
给定正整数n,及一个正整数m,求首次报数为m的是第几个人。例如当n=8,m=4时,首次报数为4的是第2个人。
Input
输入文件中包含多个测试数据。每个测试数据占一行,为两个正整数n和m,1<=n,m<=200。最后一行为0 0,表示输入结束。
Output
对每个测试数据,输出是第几个人首次报数为m。
Sample Input
8 4
10 5
0 0
Sample Output
2
5


#10


OH~~~~~·
楼上的题可以一个一个的做

#11


http://topic.csdn.net/u/20110729/12/9973e5a4-a414-4714-871f-905a85612297.html

#12


引用 11 楼 zscedu 的回复:
http://topic.csdn.net/u/20110729/12/9973e5a4-a414-4714-871f-905a85612297.html
这个也不错的哦!