《C语言程序设计教程》例题源码

更新时间:2023-09-07 08:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C语言程序设计教程》例题源码

练习一

【例1.1】打印“常熟理工学院”的汉语拼音。

程序源码如下:

void main()

{

printf(“chang shu li gong xue yuan!”);

}

【例1.2】求任意两个整数的积。

程序源码如下:

#include<stdio.h>

int mul(int a,int b);

void main()

{

int x,y,z;

printf("input two numbers:\n");

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

z=mul(x,y);

printf("mul=%d",z);

}

int mul(int a,int b)

{

int c;

c=a*b;

return c;

}

【例1.3】求整数a、b的和。

程序源码如下:

void main()

{

int a,b;

int sum;

scanf(“%d,%d”,&a,&b);

sum=a+b;

printf(“%d”,sum);

}

练习二

【例2.1】转义字符的使用。

程序源码如下:

void main()

{

printf("\x4f\x4b\x21\n");

printf("\112\112\132\104\n");

}

【例2.2】符号常量的使用。

程序源码如下:

#define PI 3.14159265

void main()

{

float r,m,s;

r=1.2;

m=2*PI*r;

s=PI*r*r;

printf("%f,%f",m,s);

}

【例2.3】整型变量的定义与使用。

程序源码如下:

void main()

{

int x,y,m;

unsigned u,n;

x=30;y=18;u=32800;

m=x+y;n=y+u;

printf("x+y=%d,y+u=%d\n",m,n);

}

【例2.4】整型变量的定义与使用。

程序源码如下:

void main()

{

int a,b,c,d;

long x,y;

x=7;

y=8;

a=9;

b=10;

c=x+a;

d=y+b;

printf("c=x+a=%d,d=y+b=%d\n",c,d); }

【例2.5】整型数据的溢出。

程序源码如下:

void main()

{

int x,y;

x=32767;

y=x+1;

printf("%d,%d\n",x,y);

}

【例2.6】实型变量的定义和应用举例。程序源码如下:

void main()

{

float x,y,z,a,b;

x=1234.2345;

a=0.02;

y=1111111.11111111111;

z=x+y;

b=a+y;

printf("%f\n%f\\n",z,b);

}

【例2.7】字符型变量的定义与使用举例。程序源码如下:

void main()

{

char c1,c2;

c1=97;c2=98;

printf("%c%c",c1,c2);

printf("%d%d\n",c1,c2);

c1=c1-32;

c2=c2-('a'-'A');

printf("%c%c\n",c1,c2);

}

【例2.8】变量初始化举例。

程序源码如下:

void main()

{

int c1,c2,c3,c4;

c1=7;c2=7;

c3=3;c4=4;

printf("%d%d",c1,c2);

printf("%d%d\n",c3,c4);

}

等效于void main()

{

int c1=7,c2=7,c3=3,c4=4;

printf("%d%d",c1,c2);

printf("%d%d\n",c3,c4);

}

【例2.10】强制类型转换。

程序源码如下:

void main()

{

float m=6.5;

int n;

n=(int)m;

printf("%f,%d",m,n);

}

练习三

【例3.1】关系表达式实例。

程序源码如下:

#include<stdio.h>

int void main()

{

int true,false;

true=(3>2);

false=(3==2);

printf("true=%d;false=%d\n",true,false);

return0;

}

【例3.2】逻辑运算符实例。

程序源码如下:

void void main()

{

char c='k';

int i=1,j=2,k=3;

float x=3e+5,y=0.85;

printf("%d,%d\n",!x*!y,!!!x);

printf("%d,%d\n",x||i&&j-3,i<j&&x<y);

printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k); }

【例3.3】自增、自减运算符实例。

程序源码如下:

#include<stdio.h>

void void main()

{

int i=8;

printf("%d\n",++i);

printf("%d\n",--i);

printf("%d\n",i++);

printf("%d\n",i--);

printf("%d\n",-i++);

printf("%d\n",-i--);

}

【例3.4】自增、自减运算符实例。

程序源码如下:

#include<stdio.h>

void void main()

{

int i=5,j=5,p,q;

p=(i++)+(i++)+(i++);

q=(++j)+(++j);

printf("%d,%d,%d,%d",p,q,i,j);

}

【例3.5】输出两个数中的大数。

程序源码如下:

#include<stdio.h>

void void main()

{

int a,b,max;

printf("\n input two numbers:");

scanf("%d%d",&a,&b);

printf("%d",max=a>b?a:b);

}

【例3.6】逗号运算符实例。

程序源码如下:

#include<stdio.h>

void void main()

{

int a=2,b=4,c=6,x,y;

y=((x=a+b),(b+c));

printf("y=%d,x=%d",y,x);

}

练习四

【例4.5】求1×2×3×4×5的算法,用C语言表示。程序源码如下:

#include<stdio.h>

void main()

{

int i,t;

t=1;

i=2;

while(i<=5)

{

t=t*i;

i=i+1;

}

printf(“%d”,t);

}

【例4.6】printf函数使用实例。

程序源码如下:

#include<stdio.h>

void void main()

{

int a=88,b=89;

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

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

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

printf("a=%d,b=%d",a,b);

}

【例4.7】printf函数应用实例。

程序源码如下:

#include<stdio.h>

void void main()

{

int a=15;

float b=138.357620;

double c=35648256.3645287;

char d='p';

printf("a=%d,%5d,%o,%x\n",a,a,a,a);

printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);

printf("c=%lf,%f,%8.4lf\n",c,c,c);

printf("d=%c,%8c\n",d,d);

}

【例4.8】printf函数应用实例。

程序源码如下:

#include<stdio.h>

void main()

{

int i=8;

printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--); }

【例4.9】printf函数应用实例。

程序源码如下:

#include<stdio.h>

void main()

{

int i=8;

printf("%d\n",++i);

printf("%d\n",--i);

printf("%d\n",i++);

printf("%d\n",i--);

printf("%d\n",-i++);

printf("%d\n",-i--);

}

【例4.10】putchar函数应用实例。

程序源码如下:

#include<stdio.h>

void void main()

{

char a='B',b='o',c='k';

putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');

putchar(a);putchar(b);

putchar('\n');

putchar(b);putchar(c);

}

【例4.11】scanf函数应用实例。

程序源码如下:

#include<stdio.h>

void void main()

{

int a,b,c;

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

scanf("%d%d%d",&a,&b,&c);

printf("a=%d,b=%d,c=%d",a,b,c);

}

【例4.12】格式字符串应用实例。

程序源码如下:

#include<stdio.h>

void void main()

{

char a,b;

printf("input character a,b\n");

scanf("%c%c",&a,&b);

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

}

【例4.13】格式字符串应用实例。

程序源码如下:

#include<stdio.h>

void void main()

{

char a,b;

printf("input character a,b\n");

scanf("%c%c",&a,&b);

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

}

【例4.14】输入一个小写字母,输出其ASCII码和对应的大写字母。程序源码如下:

#include<stdio.h>

void void main()

{

char a;

printf("input a character:\n");

a=getchar();

printf("%d\n",a);

putchar(a-32);

}

【例4.15】输入三角形的三边长,求三角形面积。

程序源码如下:

#include<stdio.h>

#include<math.h>

void main()

{

float a,b,c,s;

double area;

scanf(“%f,%f,%f”,&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);

printf(“area=%7.2f\n”,area);

}

练习五

【例5.1】输入两个数到变量x和y中,如果x>y则输出x。

程序源码如下:

#include<stdio.h>

void main()

{

int x,y;

printf("please input x,y:");

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

if(x>y)

printf("x>y\n");

printf("%d,%d\n",x,y);

}

【例5.2】某应用软件的登录密码是123,用户从键盘输入密码,如果正确则显示“欢迎使用本软件”的字样,如果密码错误则显示“密码错,请重新输入!”的字样。

#include<stdio.h>

void main()

{

int password;

printf("请输入密码:\n");

scanf("%d",&password);

if(password==123)

printf("欢迎使用本软件!");

else

printf("密码错,请重新输入!");

}

注意:本题要启动中文DOS运行环境,否则程序中的汉字将显示为乱码,以下例题如有汉字输入输出均与此相同,不再多述。

【例5.3】编程实现以下问题求解:给出一百分制成绩,要求输出成绩等级A、B、C、D、E。设90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

程序源码如下:

#include<stdio.h>

void main()

{

int score;

printf("请输入成绩:");

scanf("%d",&score);

printf("score=%d:",score);

if(score>=90)

printf("A\n");

else if(score>=80)

printf("B\n");

else if(score>=70)

printf("C\n");

else if(score>=60)

printf("D\n");

else

printf("E\n");

}

【例5.4】从键盘上输入3个实数a、b、c,求出其中的最小值并输出。

程序源码如下:

#include<stdio.h>

void main()

{

float x,y,z,min;

printf("请输入x,y,z:");

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

if(x<y)

{

if(x<z)min=x;

else min=z;

}

else

{

if(y<z)min=y;

else min=z;

}

printf("min=%f\n",min);

}

【例5.5】从键盘上输入一个字母,如果这个字母是小写字母就将它转换成大写字母。

程序源码如下:

#include<stdio.h>

void main()

{

char x;

printf("请输入一个字母:");

scanf("%c",&x);

x=(x>=’a’&&x<=’z’)?(x-32):x;/*大小写字母ASCII码值相差32*/

printf("转换成大写为:%c\n",x);

}

【例5.6】设计一个程序,要求输入数字1,显示Monday,输入数字2,显示Tuesday……,一直到输入数字7,显示Sunday,除此以外,显示error。

程序源码如下:

#include<stdio.h>

void main()

{

int x;

printf("input integer number:");

scanf("%d",&x);

switch(x)

{

case1:printf("Monday\n");break;

case2:printf("Tuesday\n");break;

case3:printf("Wednesday\n");break;

case4:printf("Thursday\n");break;

case5:printf("Friday\n");break;

case6:printf("Saturday\n");break;

case7:printf("Sunday\n");break;

default:printf("error\n");

}

}

【例5.7】编程序实现输入不同的月份输出相应的季节。按农历一般规定1~3月为春季,4~6月为夏季,7~9月为秋季,10~12月为冬季。

程序源码如下:

#include<stdio.h>

void main()

{

int month;

printf("\n请输入月份:");

scanf("%d",&month);

switch(month)

{

case1:

case2:

case3:printf("春季!\n");break;

case4:

case5:

case6:printf("夏季!\n");break;

case7:

case8:

case9:printf("秋季!\n");break;

case10:

case11:

case12:printf("冬季!\n");break;

default:printf("输入的数据非法!\n");

}

}

【例5.8】编程实现一个能进行加减乘除运算的简易计算器程序。

程序源码如下:

#include<stdio.h>

void main()

{

float a,b;

char ch;

printf("input expression:a+(-,*,/)b\n");

scanf("%f%c%f",&a,&ch,&b);

switch(ch)

{

case‘+’:printf("result is%f\n",a+b);break;

case‘-’:printf("result is%f\n",a-b);break;

case’*’:printf("result is%f\n",a*b);break;

case‘/’:if(b!=0)printf("result is%f\n",a/b);

else printf("除数为0!\n");

break;

default:printf("input error\n");

}

}

练习六

【例6.1】利用if-goto循环结构求解1到100的累加和。程序源码如下:

#include<stdio.h>

void main()

{

int n=1,s=0;

loop:s=s+n;n++;

if(n<=100)goto loop;

printf("s=%d\n",s);

}

【例6.2】用for循环解决1到100的累加问题。

程序源码如下:

#include<stdio.h>

void main()

{

int i,s=0;

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

s=s+i;

printf("s=%d\n",s);

}

【例6.3】求数学公式的和:s=1+3+5+ (99)

程序源码如下:

#include<stdio.h>

void main()

{

int s=0,i;

for(i=1;i<=99;i=i+2)

{

s=s+i;

printf("i=%d\t s=%d\n",i,s);

}

}

【例6.4】求n的阶乘n!(n!=1*2*……*n)。

程序源码如下:

#include<stdio.h>

void main()

{

int i,n;

long result=1;

printf(“input n:”);

scanf(“%d”,&n);

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

result=result*i;

printf("%d!=%ld\n",n,j);

}

【例6.5】从键盘上输入10个数,求其平均值。

程序源码如下:

#include<stdio.h>

void main()

{

int i;

float f,sum;

for(i=1,sum=0.0;i<11;i++)

{

scanf("%f",&f);

sum=sum+f;

}

printf("average=%f\n",sum/10);

}

【例6.6】从键盘上输入若干正整数,求其中最大数和最小数,输入的数以0为中止标记。

程序源码如下:

#include<stdio.h>

void main()

{

int x,max,min;

scanf("%d",&x);

max=min=x;

for(;x!=0;)

{

if(x<min)min=x;

if(x>max)max=x;

scanf("%d",&x);

}

printf("max=%d min=%d\n",max,min);

}

【例6.7】国际象棋棋盘有64格,若在第1格放1粒谷;第2格放2粒谷;第3格放4粒谷;第4格放8粒谷……如此一直放到第64格。假设2000000粒谷有一吨重,问需要多少吨谷才够放?

程序源码如下:

#include<stdio.h>

void main()

{

int i;

float n,s;

i=1;

n=1.0;

s=1.0;

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

{

n=n*2;

s=s+n;

}

printf("s=%f\n",s/2000000);

}

【例6.8】用while语句求1到100的累加和。

程序源码如下:

#include<stdio.h>

void main()

{

int i=1,s=0;

while(i<=100)

{

s=s+i;

i++;

}

printf(“s=%d\n”,s);

}

【例6.9】用do-while语句求1到100的累加和。

#include<stdio.h>

void main()

{

int i=1,s=0;

do

{

s=s+i;

i++;

}

while(i<=100);

printf(“s=%d\n”,s);

}

【例6.10】从键盘上连续输入若干个字符(以回车换行符为结束标记),统计字符个数(不含回车换行符)。

程序源码如下:

#include<stdio.h>

void main()

{

int n=0;

char c;

while((c=getchar())!='\n')

n++;

printf("number of character=%d\n",n);

}

程序运行结果如下:

Ruruweuiopjsbhcvgasfdugsdfg↙

number of character=27

【例6.11】对比例10,用do-while循环结构解决相同问题。即从键盘上连续输入若干个字符(以回车换行符为结束标记),统计字符个数(不含回车换行符)。

程序源码如下:

#include<stdio.h>

void main()

{

int n=-1;

char c;

do

n++;

while((c=getchar())!='\n');

printf("number of character=%d\n",n);

}

【例6.12】输入一个正整数(短整型),计算并输出该数的各位数字之和。反复执行直到输入为0时停止。

程序源码如下:

#include<stdio.h>

void main()

{

int x,x1,x2,x3,x4,x5;

scanf("%d",&x);

while(x!=0)

{

x5=x%10;

x=x/10;x4=x%10;

x=x/10;x3=x%10;

x=x/10;x2=x%10;

x1=x/10;

printf("%d\n",x1+x2+x3+x4+x5);

scanf("%d",&x);

}

}

【例6.13】令s=1+2+3+4+……+n,求出使得s的值最接近999的n值。

程序源码如下:

#include<stdio.h>

void main()

{

int s=0;

int n=1;

while(s<=999)

{

s=s+n;

n++;

}

n--;

printf(“n=%d\n”,n);

}

【例6.14】要输出五行10个星号的图形,可以用一重循环的for语句来实现。程序源码如下:

#include<stdio.h>

void main()

{

int i,k;

for(k=1;k<=5;k++)

{

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

{

printf("*");

}

printf("\n");

}

}

【例6.15】打印所有水仙花数(水仙花数是各位数字立方和等于该数本身的三位正整数)。

程序源码如下:

#include<stdio.h>

void main()

{

int i,j,k,m,n;

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

for(j=0;j<=9;j++)

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

{

m=i*i*i+j*j*j+k*k*k;

n=100*i+10*j+k;

if(m==n)printf("%d\n",m);

}

}

【例6.16】从键盘上接收字符并显示出来,当按Tab键时结束输入。

程序源码如下:

#include<stdio.h>

void main()

{

char ch;

for(;;)

{

scanf("%c",&ch);

if(ch==’\t’)

break;

else

printf("%c",ch);

}

}

【例6.17】设有一张厚0.1mm而面积足够大的纸,如果将它不断地对折,问对折多少次后,其厚度可达到或超过珠穆朗玛峰的高度(8848.130米)。

程序源码如下:

#include<stdio.h>

void main()

{

float h=0.1;

int n=0;

while(h<=8848130)

{

h=h*2;

n++;

}

printf("it needs%d times!\n",n);

}

【例6.18】对除了是3的倍数以外的1~100的数求和。程序源码如下:

#include<stdio.h>

void main()

{

int s,i;

s=0;

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

{

if(!(i%3))

continue;

s=s+i;

}

printf("s=%d",s);

}

【例6.19】检查输入的一行字符中有无相邻两字符相同。程序源码如下:

#include<stdio.h>

void main()

{

char a,b;

printf("input a string:");

b=getchar();

while((a=getchar())!=’\n’)

{

if(a==b)

{

本文来源:https://www.bwwdw.com/article/3d9h.html

Top