|
目录
01.第一个c程序
02.运行多个源文件
03.求整数之积
04.比较实数大小
05.字符的输出
06.显示变量所占字节数
07.自增自减运算
08.数列求和
09.乘法口诀表
10.猜数字游戏
11.模拟ATM(自动柜员机)界面
12.用一维数组统计学生成绩
13.用二维数组实现矩阵转置
14.求解二维数组的最大最小元素
15.利用数组求前n个质数
16.编制万年历
17.对数组元素排序
18.任意进制数的转换
19.判断回文数
20.求数组前n元素之和
<hr/>01.第一个c程序
代码:
#include <stdio.h> /* 包含标准输入输出头文件 */
main() /* 主函数 */
{
printf(&#34;Hello World!\n&#34;); /* 打印输出信息 */
}02.运行多个源文件
代码1:
#include &#34;print.h&#34;
int main(void){
printHello();
return 0;
}
代码2:
#include &#34;print.h&#34;
void printHello()
{
printf(&#34;hello word!\n&#34;);
}03.求整数之积
代码:
/* Input two numbers, output the product */
#include <stdio.h>
main()
{
int x,y,m; /* 定义整型变量x,y,m */
printf(&#34;Please input x and y\n&#34;); /* 输出提示信息 */
scanf(&#34;%d%d&#34;,&x,&y); /* 读入两个乘数,赋给x,y变量 */
m=x*y; /* 计算两个乘数的积,赋给变量m */
printf(&#34;%d * %d = %d\n&#34;,x,y,m); /* 输出结果 */
}04.比较实数大小
代码:
/* 输入两个浮点数,输出它们中的大数 */
#include <stdio.h>
main()
{
float x,y,c; /* 变量定义 */
printf(&#34;Please input x and y:\n&#34;); /* 提示用户输入数据 */
scanf(&#34;%f%f&#34;,&x,&y);
c=x>y?x:y; /* 计算c=max(x,y) */
printf(&#34;MAX of (%f,%f) is %f&#34;,x,y,c); /* 输出c */
}05.字符的输出
代码:
#include <stdio.h>
main()
{
char ch,nch; /* */
int count; /* */
int k; /* */
printf(&#34;Please input a string with a # in the end.\n&#34;);
scanf(&#34;%c&#34;,&ch); /* */
while(ch != &#39;#&#39;) /* */
{
if(ch >= &#39;0&#39; && ch <= &#39;9&#39;)
{
/* */
count = ch-&#39;0&#39;+1; /* */
scanf(&#34;%c&#34;,&nch); /* */
for(k=0;k<count;k++) /* */
printf(&#34;%c&#34;,nch);
}
else
printf(&#34;%c&#34;,ch); /* */
printf(&#34; &#34;); /* */
scanf(&#34;%c&#34;,&ch); /* */
}
printf(&#34;#\n&#34;); /* */
}06.显示变量所占字节数
代码:
/* 输出不同类型所占的字节数*/
#include <stdio.h>
void main()
{
/* sizeof()是保留字,它的作用是求某类型或某变量类型的字节数, */
/* 括号中可以是类型保留字或变量。*/
/*int型在不同的机器,不同的编译器中的字节数不一样,*/
/*一般来说在TC2.0编译器中字节数为2,在VC编译器中字节数为4 */
printf(&#34;The bytes of the variables are:\n&#34;);
printf(&#34;int:%d bytes\n&#34;,sizeof(int));
/* char型的字节数为1 */
printf(&#34;char:%d byte\n&#34;,sizeof(char));
/* short型的字节数为2 */
printf(&#34;short:%d bytes\n&#34;,sizeof(short));
/* long型的字节数为4 */
printf(&#34;long:%d bytes\n&#34;,sizeof(long));
/* float型的字节数为4 */
printf(&#34;float:%d bytes\n&#34;,sizeof(float));
/* double型的字节数为8 */
printf(&#34;double:%d bytes\n&#34;,sizeof(double));
/* long double型的字节数为8或10或12 */
printf(&#34;long double:%d bytes\n&#34;,sizeof(long double));
getchar();
}07.自增自减运算
代码:
#include <stdio.h>
main()
{
int a = 5, b, c, i = 10;
b = a++;
c = ++b;
printf(&#34;a = %d, b = %d, c = %d\n&#34;, a, b, c);
printf(&#34;i,i++,i++ = %d,%d,%d\n&#34;, i, i++, i++);
printf(&#34;%d\n&#34;, ++i);
printf(&#34;%d\n&#34;, --i);
printf(&#34;%d\n&#34;, i++);
printf(&#34;%d\n&#34;, i--);
printf(&#34;%d\n&#34;, -i++);
printf(&#34;%d\n&#34;, -i--);
getchar();
}08.数列求和
代码:
#include <stdio.h>
main()
{
int i,j,n;
long sum=0,temp=0;
printf(&#34;Please input a number to n:\n&#34;);
scanf(&#34;%d&#34;,&n);
if(n<1)
{
printf(&#34;The n must no less than 1!\n&#34;);
return;
}
for(i=1;i<=n;i++)
{
temp=0;
for(j=1;j<=i;j++)
temp+=j;
sum+=temp;
}
printf(&#34;The sum of the sequence(%d) is %d\n&#34;,n,sum);
getchar();
getchar();
}09.乘法口诀表
代码:
#include <stdio.h>
#include <conio.h>
void main(void)
{
int i,j,x,y;
clrscr();
printf(&#34;\n\n * * * 乘法口诀表 * * * \n\n&#34;);
x=9;
y=5;
for(i=1;i<=9;i++)
{
gotoxy(x,y);
printf(&#34;%2d &#34;,i);
x+=3;
}
x=7;
y=6;
for(i=1;i<=9;i++)
{
gotoxy(x,y);
printf(&#34;%2d &#34;,i);
y++;
}
x=9;
y= 6;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
gotoxy(x,y);
printf(&#34;%2d &#34;,i*j);
y++;
}
y-=9;
x+=3;
}
printf(&#34;\n\n&#34;);
}10.猜数字游戏
代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>//time系统时间头文件
void menu()//创建游戏菜单
{
printf(&#34;**************\n&#34;);
printf(&#34;****1.play****\n&#34;);
printf(&#34;****0.exit****\n&#34;);
printf(&#34;**************\n&#34;);
}
void playgame()
{
int magic = rand() % 100 + 1;//随机一个1-100的整数
int guess;
int counter = 0;//计数器,初始为0
while (1)
{
do {
printf(&#34;请猜一个数字:&#34;);//提示用户进行猜数字游戏,输入一个整数
scanf(&#34;%d&#34;, &guess);
counter++;
if (guess > magic)//根据比较结果,提示用户高了,低了,或是猜对了.
printf(&#34;太大了!\n&#34;);
else if (guess < magic)
printf(&#34;太小了!\n&#34;);
else
printf(&#34;right!\n&#34;);
} while (guess != magic);
printf(&#34;您一共猜了%d次,你真是太棒了!\n&#34;, counter);
}
}
int main()
{
int input = 0;
srand((unsigned int)time(0));//time(0)得到的是时间戳,对应头文件#include <time.h>
do {
menu();
scanf(&#34;%d&#34;, &input);
switch (input)
{
case 1:
playgame();
break;
case 0:
exit(0);
break;
default:
printf(&#34;输入错误!\n&#34;);
}
} while (input);
return 0;
}11.模拟ATM(自动柜员机)界面
代码:
#include <stdio.h>
void main()
{
int Password=0,Number=0,price=58,i=0;
while( Password != 1234 )
{
if( i >= 3 )
return;
i++;
puts(&#34;Please input Password: &#34;);
scanf(&#34;%d&#34;,&Password);
}
i=0;
while( Number!=price )
{
do{
puts(&#34;Please input a number between 1 and 100: &#34;);
scanf(&#34;%d&#34;,&Number);
printf(&#34;Your input number is %d\n&#34;,Number);
}while( !(Number>=1 && Number<=100) );
if( Number >= 90 )
{
printf(&#34;Too Bigger! Press any key to try again!\n&#34;);
}
else if( Number >= 70 && Number < 90 )
{
printf(&#34;Bigger!\n&#34;);
}
else if( Number >= 1 && Number <= 30 )
{
printf(&#34;Too Small! Press any key to try again!\n&#34;);
}
else if( Number > 30 && Number <= 50 )
{
printf(&#34;Small! Press any key to try again!\n&#34;);
}
else
{
if( Number == price )
{
printf(&#34;OK! You are right! Bye Bye!\n&#34;);
}
else if( Number < price )
{
printf(&#34;Sorry,Only a little smaller! Press any key to try again!\n&#34;);
}
else if( Number > price )
printf(&#34; Sorry, Only a little bigger! Press any key to try again!\n&#34;);
}
getch();
}
}12.用一维数组统计学生成绩
代码:
#include <stdio.h>
void main()
{
char SelectKey,CreditMoney,DebitMoney;
while(1)
{
do{
clrscr();
puts(&#34;=========================&#34;);
puts(&#34;| Please select key: |&#34;);
puts(&#34;| 1. Quary |&#34;);
puts(&#34;| 2. Credit |&#34;);
puts(&#34;| 3. Debit |&#34;);
puts(&#34;| 4. Return |&#34;);
puts(&#34;=========================&#34;);
SelectKey = getch();
}while( SelectKey!=&#39;1&#39; && SelectKey!=&#39;2&#39; && SelectKey!=&#39;3&#39; && SelectKey!=&#39;4&#39; );
switch(SelectKey)
{
case &#39;1&#39;:
clrscr();
puts(&#34;================================&#34;);
puts(&#34;| Your balance is $1000. |&#34;);
puts(&#34;| Press any key to return... |&#34;);
puts(&#34;================================&#34;);
getch();
break;
case &#39;2&#39;:
do{
clrscr();
puts(&#34;==================================&#34;);
puts(&#34;| Please select Credit money: |&#34;);
puts(&#34;| 1. $50 |&#34;);
puts(&#34;| 2. $100 |&#34;);
puts(&#34;| 3. Return |&#34;);
puts(&#34;==================================&#34;);
CreditMoney = getch();
}while( CreditMoney!=&#39;1&#39; && CreditMoney!=&#39;2&#39; && CreditMoney!=&#39;3&#39; );
switch(CreditMoney)
{
case &#39;1&#39;:
clrscr();
puts(&#34;=========================================&#34;);
puts(&#34;| Your Credit money is $50,Thank you! |&#34;);
puts(&#34;| Press any key to return... |&#34;);
puts(&#34;=========================================&#34;);
getch();
break;
case &#39;2&#39;:
clrscr();
puts(&#34;==========================================&#34;);
puts(&#34;| Your Credit money is $100,Thank you! |&#34;);
puts(&#34;| Press any key to return... |&#34;);
puts(&#34;==========================================&#34;);
getch();
break;
case &#39;3&#39;:
break;
}
break;
case &#39;3&#39;:
do{
clrscr();
puts(&#34;====================================&#34;);
puts(&#34;| Please select Debit money: |&#34;);
puts(&#34;| 1. $50 |&#34;);
puts(&#34;| 2. $100 |&#34;);
puts(&#34;| 3. $500 |&#34;);
puts(&#34;| 4. $1000 |&#34;);
puts(&#34;| 5. Return |&#34;);
puts(&#34;====================================&#34;);
DebitMoney = getch();
}while( DebitMoney!=&#39;1&#39; && DebitMoney!=&#39;2&#39; && DebitMoney!=&#39;3&#39; \
&& DebitMoney!=&#39;4&#39; && DebitMoney!=&#39;5&#39; );
switch(DebitMoney)
{
case &#39;1&#39;:
clrscr();
puts(&#34;===========================================&#34;);
puts(&#34;| Your Debit money is $50,Thank you! |&#34;);
puts(&#34;| Press any key to return... |&#34;);
puts(&#34;===========================================&#34;);
getch();
break;
case &#39;2&#39;:
clrscr();
puts(&#34;===========================================&#34;);
puts(&#34;| Your Debit money is $100,Thank you! |&#34;);
puts(&#34;| Press any key to return... |&#34;);
puts(&#34;===========================================&#34;);
getch();
break;
case &#39;3&#39;:
clrscr();
puts(&#34;===========================================&#34;);
puts(&#34;| Your Debit money is $500,Thank you! |&#34;);
puts(&#34;| Press any key to return... |&#34;);
puts(&#34;===========================================&#34;);
getch();
break;
case &#39;4&#39;:
clrscr();
puts(&#34;===========================================&#34;);
puts(&#34;| Your Debit money is $1000,Thank you! |&#34;);
puts(&#34;| Press any key to return... |&#34;);
puts(&#34;===========================================&#34;);
getch();
break;
case &#39;5&#39;:
break;
}
break;
case &#39;4&#39;:
clrscr();
puts(&#34;================================&#34;);
puts(&#34;| Thank you for your using! |&#34;);
puts(&#34;| Good bye! |&#34;);
puts(&#34;================================&#34;);
return;
}
}
}13.用二维数组实现矩阵转置
代码:
/* 用二维数组实现矩阵的转置 */
#include <stdio.h>
#define ROW 3
#define COL 4
main()
{
int matrixA[ROW][COL],matrixB[COL][ROW];
int i,j;
clrscr();
printf(&#34;Enter elements of the matrixA,&#34;);
printf(&#34;%d*%d:\n&#34;,ROW,COL);
for( i=0; i<ROW; i++ )
{
for( j=0; j<COL; j++ )
{
scanf(&#34;%d&#34;,&matrixA[j]);
}
}
for( i=0; i<ROW; i++ )
{
for( j=0; j<COL; j++ )
{
matrixB[j] = matrixA[j];
}
}
printf(&#34;MatrixB,&#34;);
printf(&#34;%d*%d:\n&#34;,COL,ROW);
for( i=0; i<COL; i++ )
{
for( j=0; j<ROW; j++ )
{
printf(&#34;%8d&#34;,matrixB[j]);
}
printf(&#34;\n&#34;);
}
printf(&#34;\n Press Any Key to Quit... \n&#34;);
getch();
}
14.求解二维数组的最大最小元素
代码:
#define MAXN 20
int a[MAXN][MAXN];
main()
{
int min, /* 存储最小值 */
max; /* 存储最大值 */
int row,col,n;
clrscr();
printf(&#34;Please input the order of the matrix:\n&#34;);/* 输入方阵的阶次 */
scanf(&#34;%d&#34;,&n);
printf(&#34;Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n&#34;,n-1,n-1);
for(row=0;row<n;row++)
for(col=0;col<n;col++)
scanf(&#34;%d&#34;,&a[row][col]);
for(min=a[0][0],row=0;row<n;row++)
{
/* 从每行选出最大数 */
for(max=a[row][0],col=1;col<n;col++)/*从row行选出最大数 */
if(max<a[row][col])
max=a[row][col];
if(min>max)/* 保存至row行的最小数 */
min=max;
}
printf(&#34;The minimum of maximum number is %d\n&#34;,min);
for(max=a[0][0],row=0;row<n;row++)
{
/* 每行选出最小数 */
for(min=a[row][0],col=1;col<n;col++)/* 从row行选出最小数 */
if(min>a[row][col])
min=a[row][col];
if(max<min)/*保存至row行的最大数 */
max=min;
}
printf(&#34;The maximum of minimum numbers is %d\n&#34;,max);
printf(&#34;\nPress any key to quit...\n&#34;);
getch();
}
15.利用数组求前n个质数
代码:
#define N 50
main()
{
int primes[N];
int pc,m,k;
clrscr();
printf(&#34;\n The first %d prime numbers are:\n&#34;,N);
primes[0]=2;/*2是第一个质数*/
pc =1;/*已有第一个质数*/
m =3;/*被测试的数从3开始*/
while(pc<N)
{
/*调整m使它为下一个质数*/
k=0;
while(primes[k]*primes[k]<=m)
if(m%primes[k]==0)
{/*m是合数*/
m+=2;/*让m取下一个奇数*/
k=1;/*不必用primes[0]=2去测试m,所以k从一开始*/
}
else
k++;/*继续用下一个质数去测试*/
primes[pc++]=m;
m+=2;/*除2外,其余质数均是奇数*/
}
/*输出primes[0]至primes[pc-1]*/
for(k=0;k<pc;k++)
printf(&#34;%4d&#34;,primes[k]);
printf(&#34;\n\n Press any key to quit...\n &#34;);
getch();
}
16.编制万年历
代码:
#include &#34;stdio.h&#34;
long int f(int year,int month)
{/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/
if(month<3) return year-1;
else return year;
}
long int g(int month)
{/*g(月)=月+13,如月<3;否则,g(月)=月+1*/
if(month<3) return month+13;
else return month+1;
}
long int n(int year,int month,int day)
{
/*N=1461*f(年、月)/4+153*g(月)/5+日*/
return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
int w(int year,int month,int day)
{
/*w=(N-621049)%7(0<=w<7)*/
return(int)((n(year,month,day)%7-621049L%7+7)%7);
}
int date[12][6][7];
int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
main()
{int sw,leap,i,j,k,wd,day;
int year;/*年*/
char title[]=&#34;SUN MON TUE WED THU FRI SAT&#34;;
clrscr();
printf(&#34;Please input the year whose calendar you want to know: &#34;);/*输入年*/
scanf(&#34;%d%*c&#34;,&year);/*输入年份值和掠过值后的回车*/
sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;/*判闰年*/
for(i=0;i<12;i++)
for(j=0;j<6;j++)
for(k=0;k<7;k++)
date[j][k]=0;/*日期表置0*/
for(i=0;i<12;i++)/*一年十二个月*/
for(wd=0,day=1;day<=day_tbl[leap];day++)
{/*将第i+1月的日期填入日期表*/
date[wd][sw]=day;
sw=++sw%7;/*每星期七天,以0至6计数*/
if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/
}
printf(&#34;\n|==================The Calendar of Year %d =====================|\n|&#34;,year);
for(i=0;i<6;i++)
{/*先测算第i+1月和第i+7月的最大星期数*/
for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/
wd+=date[5][k]+date[i+6][5][k];
wd=wd?6:5;
printf(&#34;%2d %s %2d %s |\n|&#34;,i+1,title,i+7,title);
for(j=0;j<wd;j++)
{
printf(&#34; &#34;);/*输出四个空白符*/
/*左栏为第i+1月,右栏为第i+7月*/
for(k=0;k<7;k++)
if(date[j][k])
printf(&#34;%4d&#34;,date[j][k]);
else printf(&#34; &#34;);
printf(&#34; &#34;);/*输出十个空白符*/
for(k=0;k<7;k++)
if(date[i+6][j][k])
printf(&#34;%4d&#34;,date[i+6][j][k]);
else printf(&#34; &#34;);
printf(&#34; |\n|&#34;);
}
/*scanf(&#34;%*c&#34;);/*键入回车输出下一个月的日历*/
}
puts(&#34;=================================================================|&#34;);
puts(&#34;\n Press any key to quit...&#34;);
getch();
}
17.对数组元素排序
代码:
rest(int a[], int n)
{
int i,low,high,t;
for(i=0,low=0,high=n-1;i<=high;)
{
if(a>0)
{
/*a与a[high]交换,随之high减1*/
t=a;
a=a[high];
a[high]=t;
high--;
}
else if(a==0)
i++; /* 掠过该元素 */
else
{
/*a与a[low]交换,随之low增1, i增1*/
t=a;
a=a[low];
a[low]=t;
low++;
i++;
}
}
}
int s[]={8,4,0,-1,6,0,-5};
main()
{
int i;
clrscr();
printf(&#34;\n The arry before rest is:\n&#34;);
for(i=0;i<sizeof(s)/sizeof(s[0]);i++)
printf(&#34;%4d&#34;,s);
rest(s,sizeof(s)/sizeof(s[0]));
printf(&#34;\n The arry after rest is:\n&#34;);
for(i=0;i<sizeof(s)/sizeof(s[0]);i++)
printf(&#34;%4d&#34;,s);
printf(&#34;\n Press any key to quit...\n&#34;);
getch();
}
18.任意进制数的转换
代码:
/* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */
#define M sizeof(unsigned int)*8
int trans(unsigned n, int d, char s[])
{
static char digits[] =&#34;0123456789ABCDEF&#34;; /* 十六进制数字的字符 */
char buf[M+1];
int j, i = M;
if(d<2||d>16)
{
s[0]=&#39;\0&#39;; /* 不合理的进制,置s为空字符串 */
return 0; /* 不合理的进制,函数返回0 */
}
buf=&#39;\0&#39;;
do
{
buf[--i]=digits[n%d]; /*译出最低位,对应字符存入对应工作数组中*/
n/=d;
}while(n);
/* 将译出在工作数组中的字符串复制到s */
for(j=0;(s[j]=buf)!=&#39;\0&#39;;j++,i++);
/* 其中控制条件可简写成s[j]=buf */
return j;
}
/* 主函数用于测试函数 trans() */
main()
{
unsigned int num = 253;
int scale[]={2,3,10,16,1};
char str[33];
int i;
clrscr();
for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++)
{
if(trans(num,scale,str))
printf(&#34;%5d = %s(%d)\n&#34;,num,str,scale);
else
printf(&#34;%5d => (%d) Error! \n&#34;,num,scale);
}
printf(&#34;\n Press any key to quit...\n&#34;);
getch();
}
19.判断回文数
代码:
/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数 */
int circle(int n, int d)
{
int s=0,m=n;
while(m)
{
s=s*d+m%d;
m/=d;
}
return s==n;
}
/* main函数用于测试circle函数 */
int num[]={232,27,851};
int scale[]={2,10,16};
main()
{
int i,j;
clrscr();
for(i=0;i<sizeof(num)/sizeof(num[0]);i++)
for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++)
if(circle(num,scale[j]))
printf(&#34;%d -> (%d) is a Circle Number!\n&#34;,num,scale[j]);
else
printf(&#34;%d -> (%d) is not a Circle Number!\n&#34;,num,scale[j]);
printf(&#34;\n Press any key to quit...\n&#34;);
getch();
}
20.求数组前n元素之和
代码:
int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
main()
{
int i;
clrscr();
printf(&#34;\n The arry is:\n&#34;);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
printf(&#34; %d &#34;,a);
printf(&#34;\n SUM of the arry is: %d\n&#34;,sum(a,sizeof(a)/sizeof(a[0])));
printf(&#34;\n Press any key to quit...\n&#34;);
getch();
}
sum(int a[],int n)
{
if(n<=0)
return 0;
return a[n-1]+sum(a,n-1);
}更多精彩请看下集~ |
|