1
#include<stdio.h>
int main(){
char ch='A';
printf("ch(1)=%d,ch(2)=%c \n", ch,ch+1);
}
执行结果:
2
#include<stdio.h>
int main(){
int k=1,t=3;
do{
// t=4,k=2; t=7,k=4; t=11,k=5; t=17,k=7
t+=k++;
if(t%7==0)
continue;
else
// k=3,k=6,k=8
++k;
}while(t<15);
printf("k is %d \n", k);
}
执行结果:
3
#include<stdio.h>
int main(){
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},a[5]={0},i;
for(i=0; i<12; i++)
//a[1]=4,a[2]=3,a[3]=3,a[4]=2
a[s[i]]++;
for(i=1;i<5;i++)
printf("%d",a[i]);
printf("\n");
}
执行结果:
4
#include<stdio.h>
int main(){
char str1[15]="good";
char str2[10]="morning";
// str2 追加到 str1
strcat(str1,str2);
puts(str1);
printf("length of str1 is %d \n",strlen(str1));
}
执行结果:
5
#include<stdio.h>
int main(){
char *s="13579";
s++;
// printf("%s%s%s\n",*s,*(s+1),*s+1); 错误
printf("%c%c%c\n",*s,*(s+1),*s+1);
}
执行结果:
6
#include<stdio.h>
#define MAX(A,B) (A)>(B)?(A):(B)
#define PRINT(Y) printf("Y=%d\n",Y)
int main(){
int a=1,b=2,c=3,d=4,temp;
// 3<7,temp=7
temp=MAX(a+b,c+d);
PRINT(temp);
}
执行结果:
7
#include<stdio.h>
int fun(int x,int y)
{
return(x+y);
}
int main(){
int a=2,b=5,c=8;
//a+c+b=15,a-c=-6
printf("%d\n",fun(fun(a+c,b),a-c));
}
执行结果:
8
#include<stdio.h>
int main(){
struct date{
int year,month,day;
}today;
// 4字节 * 3=12字节
printf("%d\n",sizeof(struct date));
}
执行结果:
9 执行下列程序后,file2.txt的内容为
#include<stdio.h>
int main(){
FILE *in,*out;
//3+1+4+1+2+1+4=16
char *str1="YOU PLAN TO FAIL.";
//2+1+3+1+4+1+2+1+4=7+4+4+4=15+4
char *str2="IF YOU FAIL TO PLAN.";
if((fopen("/Users/vincent/Desktop/file1.txt","r"))==NULL) {
printf("file1.txt is no exist!");
return 0;
}
if((fopen("/Users/vincent/Desktop/file2.txt","r"))==NULL) {
printf("file2.txt is no exist!");
return 0;
}
in = fopen("/Users/vincent/Desktop/file1.txt","w");
while(*str1!='.')
// str1写入in
putc(*str1++,in);
fclose(in);
in = fopen("/Users/vincent/Desktop/file1.txt","r");
out = fopen("/Users/vincent/Desktop/file2.txt","w");
while(!feof(in)){
// C语言读取文件会自动在后面添加\377
printf("%c",fgetc(in));
fputc(*str2++,out);
}
printf("\n");
fclose(in);
fclose(out);
}
执行结果:
控制台:
10
struct num{
int a;
int b;
float c;
}n={1,3,5.0};
struct num *p = &n;
int main(){
// p 不是结构体变量,不能写成 p.b,要写成(*p).v,或 p -> age
// 3
p->b/n.a;
// *表示乘,3 * 4 = 12
p->c/n.a*++p->b;
// 1+5.0=6.0
(*p).a+p->c;
}
11 计算 1000! 的末尾含有多少个零。
#include<stdio.h>
int main(){
int k,i,m;
// 2 * 5 才会出现 0,而2的个数肯定多于5,所以求出5的个数就行
// 1*2*3*4*5*6*7*8*9*10 5和10才含有因数5,所以每次i+5
for(k=0,i=5;i<1000;i+=5){
m=i;
// 25=5*5,循环2次;125=5*5*5,循环3次
while(m%5==0){
k++;
//没有这行退不出循环
m=m/5;
}
}
printf("%d\n",k);
}
执行结果:
12 通过指针操作,找出并输出三个整数中的最小者。
#include<stdio.h>
int main(){
int *a,*b,*c,num,x,y,z;
a=&x;
b=&y;
c=&z;
printf("Input a,b,c:");
//输入要按逗号隔开
scanf("%d,%d,%d",a,b,c);
printf("%d,%d,%d\n",*a,*b,*c);
num=*a;
if(*a>*b)
num=*b;
if(num>*c)
num=*c;
printf("The minimun=%d\n",num);
}
执行结果:
13 先又用户通过键盘输入一个文件名,然后向此文件输入一串字符(假设输入以字符“#”结束),最后再将当前日期写到文件的尾部。
#include<stdio.h>
int main(){
char ch,date[20],fname[30];
FILE *fp;
printf("Input the file name:");
// 输入一个文件名
scanf("%s",fname);
if((fp=fopen(fname,"w"))==NULL){
printf("Can not open file %s!\n",fname);
exit(0);
}
printf("Input a string:\n");
// 输入一串字符,以“#”结束
while((ch=getchar())!='#')
// 写入到文件中
fputc(ch,fp);
printf("Enter date:\n");
scanf("%s",date);
// 向文件追加日期
fprintf(fp,"%s",date);
fclose(fp);
}
执行结果:
14 递归求和
15 字符串循环移动