c语言100道经典题目 c语言编程网站
大家好,c语言100道经典题目相信很多的网友都不是很明白,包括c语言编程网站也是一样,不过没有关系,接下来就来为大家分享关于c语言100道经典题目和c语言编程网站的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
求C语言题目
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);
}
【程序13】
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数
本身.例如:153是一个"水仙花数",因为1531的三次方+5的三次方+3的三次方.
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位.
2.程序源代码:
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n100;n<1000;n++)
{
in/100;/*分解出百位*/
jn/10%10;/*分解出十位*/
kn%10;/*分解出个位*/
if(i*100+j*10+ki*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
【程序14】
题目:将一个正整数分解质因数.例如:输入90,打印出902*3*3*5.
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可.
(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
重复执行第一步.
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步.
2.程序源代码:
/* zheng int is divided yinshu*/
main()
{
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d",n);
for(i2;i90分的同学用a表示,60-89分之间的用b表示,
60分以下的用c表示.
1.程序分析:(a>b) a:b这是条件运算符的基本例子.
2.程序源代码:
main()
{
int score;
char grade;
printf("please input a score\n");
scanf("%d",&score);
gradescore>90'a':(score>60'b':'c');
printf("%d belongs to%c",score,grade);
}
【程序15】
题目:利用条件运算符的嵌套来完成此题:学习成绩>90分的同学用A表示,60-89分之间的用B表示,
60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
2.程序源代码:
main()
{
int score;
char grade;
printf("please input a score\n");
scanf("%d",&score);
gradescore>90?'A':(score>60?'B':'C');
printf("%d belongs to%c",score,grade);
}
【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数.
1.程序分析:利用辗除法.
2.程序源代码:
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1{ tempnum1;
num1num2;
num2temp;
}
anum1;bnum2;
while(b!0)/*利用辗除法,直到b为0为止*/
{
tempa%b;
ab;
btemp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}
【程序17】
题目:输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
2.程序源代码:
#include"stdio.h"
main()
{char c;
int letters0,space0,digit0,others0;
printf("please input some characters\n");
while((cgetchar())!'\n')
{
if(c>'a'&&c'a'&&c'0'&&c<'9')
digit++;
else
others++;
}
printf("all in all:char%d space%d digit%d others%d\n",letters,
space,digit,others);
}
【程序18】
题目:求sa+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时
共有5个数相加),几个数相加有键盘控制.
1.程序分析:关键是计算出每一项的值.
2.程序源代码:
main()
{
int a,n,count1;
long int sn0,tn0;
printf("please input a and n\n");
scanf("%d,%d",&a,&n);
printf("a%d,n%d\n",a,n);
while(count<n)
{
tntn+a;
snsn+tn;
aa*10;
++count;
}
printf("a+aa+...%ld\n",sn);
}
【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如61+2+3.编程
找出1000以内的所有完数.
1.程序分析:请参照程序<--上页程序14.
2.程序源代码:
main()
{
static int k[10];
int i,j,n,s;
for(j2;j<1000;j++)
{
n-1;
sj;
for(i1;i{
if((j%i)0)
{ n++;
ss-i;
k[n]i;
}
}
if(s0)
{
printf("%d is a wanshu",j);
for(i0;i printf("%d,",k[i]);
printf("%d\n",k[n]);
}
}
}
【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米第10次反弹多高
1.程序分析:见下面注释
2.程序源代码:
main()
{
float sn100.0,hnsn/2;
int n;
for(n2;n0)
{x1(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2x1;
day--;
}
printf("the total is%d\n",x1);
}
【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
main()
{
int day,x1,x2;
day9;
x21;
while(day>0)
{x1(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2x1;
day--;
}
printf("the total is%d\n",x1);
}
【程序22】
题目:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定
比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单.
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数.
2.程序源代码:
main()
{
char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/
for(i'x';i<'z';i++)
for(j'x';j<'z';j++)
{
if(i!j)
for(k'x';k<'z';k++)
{ if(i!k&&j!k)
{ if(i!'x'&&k!'x'&&k!'z')
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
【程序23】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
for循环,第一层控制行,第二层控制列.
2.程序源代码:
main()
{
int i,j,k;
for(i0;i<3;i++)
{
for(j0;j<2-i;j++)
printf("");
for(k0;k<2*i;k++)
printf("*");
printf("\n");
}
for(i0;i<2;i++)
{
for(j0;j<i;j++)
printf("");
for(k0;k<4-2*i;k++)
printf("*");
printf("\n");
}
}
【程序24】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.
1.程序分析:请抓住分子与分母的变化规律.
2.程序源代码:
main()
{
int n,t,number20;
float a2,b1,s0;
for(n1;n<number;n++)
{
ss+a/b;
ta;aa+b;bt;/*这部分是程序的关键,请读者猜猜t的作用*/
}
printf("sum is%9.6f\n",s);
}
【程序25】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘.
2.程序源代码:
main()
{
float n,s0,t1;
for(n1;n<20;n++)
{
t*n;
s+t;
}
printf("1+2!+3!...+20!%e\n",s);
}
【程序26】
题目:利用递归方法求5!.
1.程序分析:递归公式:fnfn_1*4!
2.程序源代码:
#include"stdio.h"
main()
{
int i;
int fact();
for(i0;i<5;i++)
printf("\40:%d!%d\n",i,fact(i));
}
int fact(j)
int j;
{
int sum;
if(j0)
sum1;
else
sumj*fact(j-1);
return sum;
}
【程序27】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来.
程序源代码:
#include"stdio.h"
main()
{
int i5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
char next;
if(n<1)
{
nextgetchar();
printf("\n\0:");
putchar(next);
}
else
{
nextgetchar();
palin(n-1);
putchar(next);
}
}
【程序28】
题目:有5个人坐在一起,问第五个人多少岁他说比第4个人大2岁.问第4个人岁数,他说比第
3个人大2岁.问第三个人,又说比第2人大两岁.问第2个人,说比第一个人大两岁.最后
问第一个人,他说是10岁.请问第五个人多大
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段.要想知道第五个人岁数,需知道
第四人的岁数,依次类推,推到第一人(10岁),再往回推.
2.程序源代码:
age(n)
int n;
{
int c;
if(n1) c10;
else cage(n-1)+2;
return(c);
}
main()
{ printf("%d",age(5));
}
【程序29】
题目:给一个不多于5位的正整数,要求:一,求它是几位数,二,逆序打印出各位数字.
1.程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
2.程序源代码:
main()
{
long a,b,c,d,e,x;
scanf("%ld",&x);
ax/10000;/*分解出万位*/
bx%10000/1000;/*分解出千位*/
cx%1000/100;/*分解出百位*/
dx%100/10;/*分解出十位*/
ex%10;/*分解出个位*/
if(a!0) printf("there are 5,%ld%ld%ld%ld%ld\n",e,d,c,b,a);
else if(b!0) printf("there are 4,%ld%ld%ld%ld\n",e,d,c,b);
else if(c!0) printf(" there are 3,%ld%ld%ld\n",e,d,c);
else if(d!0) printf("there are 2,%ld%ld\n",e,d);
else if(e!0) printf(" there are 1,%ld\n",e);
}
【程序30】
题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同.
1.程序分析:同29例
2.程序源代码:
main()
{
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wanx/10000;
qianx%10000/1000;
shix%100/10;
gex%10;
if(gewan&&shiqian)/*个位等于万位并且十位等于千位*/
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
}
【程序31】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
判断第二个字母.
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母.
2.程序源代码:
#include
void main()
{
char letter;
printf("please input the first letter of someday\n");
while((lettergetch())!'y')/*当所按字母为y时才结束*/
{ switch(letter)
{case's':printf("please input second letter\n");
if((lettergetch())'a')
printf("saturday\n");
else if((lettergetch())'u')
printf("sunday\n");
else printf("data error\n");
break;
case'f':printf("friday\n");break;
case'm':printf("monday\n");break;
case't':printf("please input second letter\n");
if((lettergetch())'u')
printf("tuesday\n");
else if((lettergetch())'h')
printf("thursday\n");
else printf("data error\n");
break;
case'w':printf("wednesday\n");break;
default: printf("data error\n");
}
}
}
【程序32】
题目:press any key to change color, do you want to try it. please hurry up!
程序源代码:
#include
void main(void)
{
int color;
for(color 0; color< 8; color++)
{
textbackground(color);/*设置文本的背景颜色*/
cprintf("this is color%d\r\n", color);
cprintf("press any key to continue\r\n");
getch();/*输入字符看不见*/
}
}
【程序33】
题目:学习gotoxy()与clrscr()函数
程序源代码:
#include
void main(void)
{
clrscr();/*清屏函数*/
textbackground(2);
gotoxy(1, 5);/*定位函数*/
cprintf("output at row 5 column 1\n");
textbackground(3);
gotoxy(20, 10);
cprintf("output at row 10 column 20\n");
}
【程序34】
题目:练习函数调用
1.程序分析:
2.程序源代码:
#include
void hello_world(void)
{
printf("hello, world!\n");
}
void three_hellos(void)
{
int counter;
for(counter 1; counter< 3; counter++)
hello_world();/*调用此函数*/
}
void main(void)
{
three_hellos();/*调用此函数*/
}
【程序35】
题目:文本颜色设置
程序源代码:
#include
void main(void)
{
int color;
for(color 1; color a[j]) minj;
tema[i];
a[i]a[min];
a[min]tem;
}
/*output data*/
printf("after sorted\n");
for(i0;iprintf("%5d",a[i]);
}
【程序36】
题目:求100之内的素数
程序源代码:
#include
#include"math.h"
#define N 101
main()
{
int i,j,line,a[N];
for(i2;ifor(i2;i for(ji+1;j{
if(a[i]!0&&a[j]!0)
if(a[j]%a[i]0)
a[j]0;}
printf("\n");
for(i2,line0;i{
if(a[i]!0)
{printf("%5d",a[i]);
line++;}
if(line10)
{printf("\n");
line0;}
}
}
【程序37】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
下次类推,即用第二个元素与后8个进行比较,并进行交换。
2.程序源代码:
#define N 10
main()
{int i,j,min,tem,a[N];
/*input data*/
printf("please input ten num:\n");
for(i0;i{
printf("a[%d]",i);
scanf("%d",&a[i]);}
printf("\n");
for(i0;iprintf("%5d",a[i]);
printf("\n");
/*sort ten num*/
for(i0;i{mini;
for(ji+1;jif(a[min]>a[j]) minj;
tema[i];
a[i]a[min];
a[min]tem;
}
/*output data*/
printf("After sorted\n");
for(i0;iprintf("%5d",a[i]);
}
【程序38】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出.
2.程序源代码:
main()
{
float a[3][3],sum0;
int i,j;
printf("please input rectangle element:\n");
for(i0;i<3;i++)
for(j0;j<3;j++)
scanf("%f",&a[i][j]);
for(i0;i<3;i++)
sumsum+a[i][i];
printf("duijiaoxian he is%6.2f",sum);
}
【程序39】
题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中.
1.程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
此元素之后的数,依次后移一个位置.
2.程序源代码:
main()
{
int a[11]{1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i0;iend)
a[10]number;
else
{for(i0;inumber)
{temp1a[i];
a[i]number;
for(ji+1;j<11;j++)
{temp2a[j];
a[j]temp1;
temp1temp2;
}
break;
}
}
}
for(i0;i<11;i++)
printf("%6d",a[i]);
}
【程序40】
题目:将一个数组逆序输出.
1.程序分析:用第一个与最后一个交换.
2.程序源代码:
#define n 5
main()
{ int a[n]{9,6,5,4,1},i,temp;
printf("\n original array:\n");
for(i0;i printf("%4d",a[i]);
for(i0;i{tempa[i];
a[i]a[n-i-1];
a[n-i-1]temp;
}
printf("\n sorted array:\n");
for(i0;i printf("%4d",a[i]);
}
【程序41】
题目:学习static定义静态变量的用法
程序源代码:
#include"stdio.h"
varfunc()
{
int var0;
static int static_var0;
printf("\40:var equal%d\n",var);
printf("\40:static var equal%d\n",static_var);
printf("\n");
var++;
static_var++;
}
void main()
{int i;
for(i0;i<3;i++)
varfunc();
}
【程序42】
题目:学习使用auto定义变量的用法
程序源代码:
#include"stdio.h"
main()
{int i,num;
num2;
for(i0;i<3;i++)
{ printf("\40: the num equal%d\n",num);
num++;
{
auto int num1;
printf("\40: the internal block num equal%d\n",num);
num++;
}
}
}
【程序43】
题目:学习使用static的另一用法.
程序源代码:
#include"stdio.h"
main()
{
int i,num;
num2;
for(i0;i<3;i++)
{
printf("\40: the num equal%d\n",num);
num++;
{
static int num1;
printf("\40:the internal block num equal%d\n",num);
num++;
}
}
}
【程序44】
题目:学习使用external的用法.
程序源代码:
#include"stdio.h"
int a,b,c;
void add()
{ int a;
a3;
ca+b;
}
void main()
{ ab4;
add();
printf("the value of c is equal to%d\n",c);
}
【程序45】
题目:学习使用register定义变量的方法.
程序源代码:
void main()
{
register int i;
int tmp0;
for(i1;i");
scanf("%d",&num);
printf("\40:the square for this number is%d\n",sq(num));
if(num>50)
againtrue;
else
againfalse;
}
}
【程序46】
题目:宏#define命令练习(1)
程序源代码:
#include"stdio.h"
#define TRUE 1
#define FALSE 0
#define SQ(x)(x)*(x)
void main()
{
int num;
int again1;
printf("\40: Program will stop if input value less than 50.\n");
while(again)
{
printf("\40:Please input number>");
scanf("%d",&num);
printf("\40:The square for this number is%d\n",SQ(num));
if(num>50)
againTRUE;
else
againFALSE;
}
}
【程序47】
题目:宏#define命令练习(2)
程序源代码:
#include"stdio.h"
#define exchange(a,b){\/*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
int t;\
ta;\
ab;\
bt;\
}
void main(void)
{
int x10;
int y20;
printf("x%d; y%d\n",x,y);
exchange(x,y);
printf("x%d; y%d\n",x,y);
}
【程序48】
题目:宏#define命令练习(3)
程序源代码:
#define lag>
#define sma y) x:y
#define minimum(x,y)(x>y) y:x
void main()
{ int a10,b20;
#ifdef max
printf("\40: the larger one is%d\n",maximum(a,b));
#else
printf("\40: the lower one is%d\n",minimum(a,b)
C语言编程中的问题
1.先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。
2.按照《C语言程序设计入门学习六步曲》进行上机练习。
3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格
4.积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。
5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。
6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。
7.由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。
出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】
在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。
第一步、验证性练习
在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:
1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。
2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。
3、修改C语言语法错误时要注意以下两点:
(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。
(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。
例如:将最简单的Hello World!程序
#include"stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的
printf("Hello World!\n");
中的Hello World!改成你的姓名,运行一下程序,看有什么变化?
再如求1+2+3...+100的和的程序
#include<stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?
第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?
找出程序结果变化的原因,就加深了对C语句的理解。
第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。
在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。
第四步、增强程序的调试能力
在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。
注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!
注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。
例如,将Hello World程序中语句
printf("Hello World!\n");
中的;改成中文的分号;
运行一下程序,看有什么结果?
调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。
即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。
第五步、研究典型的C语言程序,提高程序设计能力
C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。
计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?
解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.
大学福音经典编程题适用于专升本
C语言100道适用专升本超有用
1.十进制数转任意进制数
2.数字三角形
3,编程求某年第 n天的日期。
4.求周岁
5.编程求出使该算式成立时的这两个数
6.功能:(较难不用看)编程求任意给两个日期(年月日)相差的天数。
7.把一个数的二进制奇数位和偶数位交换
8.题目要求找出数组中的两个单身狗
9,数字字符串转换为整数
10.升序的数组插入一个数,还保持升序
11.输入年月判断该月多少天
12.遍历法求名次
13.谁是凶手
14.输入一个整数数组,实现一个函数,来调整数组中的奇数和偶数的位置,奇数在前偶数在后
15.1元一瓶汽水,两个空瓶可以换一瓶,问20元可以喝多少瓶
16.打印一个菱形,输如n的打印2*n-1行的菱形
17.输入一个整数找出紧跟在他后面的素数
18.计数求和,Sn=2+22+222+2222+22222
19.输入两个数求最小公倍数和最大公因数,代码中有详解
20.一个数+100之后是完全平方数,+168还是一个完全平方数
21.数字金字塔
22.字符串左旋
23.[稍难不用看]要求:写一个函数判断一个字符串是否是另一个字符串旋转后得到的
24.给数组删除重复的元素
25.C语言编程题求1!+ 2!+ 3!+ 4!....+N
26.C语言编程题求斐波那契数(循环法与递归法
27.C语言编程输入n,k求n的k次幂(递归与非递归)
28.(递归)输入一个数,把他的每一位相加在输出出来;
29,实现函数把字符数组的元素逆序如“abc“,逆序成“cba“
30.递归拆分整数
31.设计以函数打印乘法口诀表
32构造一函数判断是否为素数100-200之间(只能被自己和1整除的数)
33.打印二进制数的奇数位和偶数位;分别打印二进制序列
34.计算M和N二进制中不同的位数,例如 1和7有两位不同;
35输出1900到2000之间的所有闺年
36,猴子吃桃问题
37.选择排序法升序排列
38.冒泡排序法
39.求3*3矩阵对角元素的和
40.把整数数组中的元素值逆序存放
41.杨辉三角形
42.折半查找---必须建立在有序的数组中
43,计算3行80个字符的类型个数
44.原文与密码
45模拟strcat字符串连接函数
46.模拟strlen(3种方法)
47模拟strcmp
48.模拟字符串拷贝函数strcpy
49.strncpy的模拟
50.strncat模拟实现
51模拟strncmp
52.(较难些可以不看)模拟寻找子串的函数strstr
53.内存拷贝函数
54.判断一个数是不是素数:
53.3*3矩阵的转置
56任何比2大的偶数,总能表示两个素数
57.输入四位数字输出四个字符
58.把a数组的内容拷贝到b数组每拷贝三个放1个*
59.输入一串字符串把其中最长的字母拷贝放到另一个数组
60.16进制转换位10进制
61.输入10个整数,最大的和最后一个位置上的交换最小的和最前面的那个交换
62.报数问题n个人从1报数到3,每次报数到3的那个元素被清空
63.输入多个字符串,排序后输出
64.(难可不看)输入一个字符串,将连续的数字字符串放到另一个二维数组中
65.结构体指针问题
66.三天打鱼两天晒网,第 N天是打鱼还是晒网?
67.输入多个字符串,然后输出最短的字符串
68.3个数,有两个数一样,找另一个数
69.有 1000人捐款,捐到 10万就停止捐款。统计捐款人数和总额
70.指定位置字符串逆序
71.水仙花数
72.求素数因子
73.判断一个数是不是完全平方数?
74.蠕虫问题
75.结构体排序学生情况
76.求一元二次方程的根, ax方+bx+ c=0,ab,c自己输入
77.累加100--999之间个位数为7的素数女78斐波那契兔子
78迭代求平方根
79.累加二维数组边缘元素的和
80.逗号表达式方面小题
81.白马百担问题
82.八进制转10进制
83.func(func(x++,y++),func(--x,--y));函数调用问题
84.水手分桃子
85挖素数
86.两个有序递增的数组存到另一个数组还是有序的
87.把字符串中的空格去掉女88.将b字符串的内容插入到a字符串,a字符串保持升席
89.用递归的方法把字符串逆序
90分解质因数
91.10进制转16进制
92.10进制转8进制
93.计算并输出n以内10个最大素数的和
94.完数
95打印X型图案
96.打印空心正方形
97.判断一个数组是否有序
98.整形数组删除指定的数字
99.给字符数组每个元素中间添加一个空格
100.旋转字符
101.求sinx近似值
好了,文章到此结束,希望可以帮助到大家。