文章目录
- 文件操作题
“%”:格式化字符串的起始标志。
“0”:表示使用零来填充输出字段的宽度。
“4”:表示输出字段的宽度为4个字符,如果输出的十六进制数不足4位,则在左边用零进行填充。
“x”:表示以十六进制的形式输出变量的值。
十六进制计算
#include <stdio.h>
struct w
{char low;char high;};
union u
{struct w byte;short word;
} uw;
int main()
{int result;uw.word=0x1234;printf("word value:%04x\n",uw.word);printf("high byte:%02x\n",uw.byte.high);printf("low byte:%02x\n",uw.byte.low);uw.byte.low=0x74;printf("word value:%04x\n",uw.word);result=uw.word+0x2a34;printf("the result:%04x\n",result);
}
**s1竟然会随着s2=s2+2的变化而变化。
#include <stdio.h>
int main()
{char *s2="I love China!",**s1=&s2;char *s3,c,*s4="w";s3=&c;*s3='H';s2=s2+2;printf("%s\t%c\t%s\t%c\n",s2,*s3,s4,**s1);} //输出:love China! H w l
题目:百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马1担,编程计算所有可能的驮法?
输入
无
输出
hb=2,hm=30,hl=68
hb=5,hm=25,hl=70
hb=8,hm=20,hl=72
hb=11,hm=15,hl=74
hb=14,hm=10,hl=76
hb=17,hm=5,hl=78
hb=20,hm=0,hl=80
n=7
#include <stdio.h>
int main()
{int hb,hm,hl,n=0; //hb,hm,hl分别为大中小马驮的担数 for(hb=0;hb<=100;hb+=3) // {for(hm=0;hm<=100;hm+=2) //{hl=100-hb-hm; //if(hb/3+hm/2+2*hl==100) //{n++;printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,hl*2);}} }printf("n=%d\n",n);
}
用起泡法对输入的10个字符排序后按从小到大的次序输出
#define N 10
#include <stdio.h>
char str[N];
void main()
{int i,flag;for(flag=1;flag==1;){scanf("%s",str);printf("%s",str);flag=0;printf("\n");}sort(str);for(i=0;i<N;i++){printf("%c",str[i]);}printf("\n");} sort(char str[N]){int i,j;char t;for(j=1;j<N;j++){for(i=0;i<10-j;i++){if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;} }}}
求矩阵外边缘元素,该矩阵用一维数组表示。
#include <stdio.h>
add(int m,int n,int arr[]) //m行,n列
{int i,j,sum;for(i=0;i<m;i=i+m-1) //求第一行和最后一行的和{for(j=0;j<n;j++){sum+=arr[i*n+j];}}for(j=0;j<n;j+=n-1) //第一列和最后一列{for(i=1;i<m-1;i++) //从第二行到最后一行的前一行{sum+=arr[i*n+j];}}return sum;
}
文件操作题
fread(&score[i], sizeof(float), 1, fp) != 1
表示从文件中读取一个 float 类型的数据,并将其存储到 score 数组的第 i 个位置上。如果成功读取了一个元素,则 fread() 返回值为1,条件判断结果为 false。如果读取失败或者已到达文件末尾,则 fread() 返回值不为1,条件判断结果为 true。
换句话说,这个条件判断用于检查读取文件是否成功。如果读取成功,继续读取下一个元素;如果读取失败或者到达文件末尾,将执行相应的错误处理逻辑。
feof(fp) 是一个文件操作函数,用于检查文件流 fp 的当前位置是否已经到达文件末尾(End-of-File)。
feof(fp) 函数返回一个非零值(true)表示文件流 fp 已经到达文件末尾;返回零(false)表示文件流 fp
还没有到达文件末尾。 在代码中的使用情景是判断 fread() 函数是否读取到了文件末尾。当 fread()
函数读取到文件末尾时,返回值不等于1,同时可以通过 feof(fp)
来进一步确认是否到达了文件末尾。如果返回值为非零值,表示已经到达文件末尾,可以根据需要进行相应的处理。
#include <stdio.h>void load(float score[], int n) {FILE *fp;int i;if ((fp = fopen("202001170218.txt", "rb")) == NULL) {printf("cannot open infile\n");return;}for (i = 0; i < n; i++) {if (fread(&score[i], sizeof(float), 1, fp) != 1) {if (feof(fp)) {fclose(fp);return;}printf("file read error\n");}}fclose(fp);
}void save(float score[], int n) {FILE *fp;int i;if ((fp = fopen("202001170218.txt", "wb")) == NULL) {printf("cannot open file\n");return;}for (i = 0; i < n; i++) {if (fwrite(&score[i], sizeof(float), 1, fp) != 1) {printf("file write error\n");}}fclose(fp);
}void sort(float score[], int n) {int i, j, k;float t;for (i = 0; i < n - 1; i++) {k = i;for (j = i + 1; j < n; j++) {if (score[j] < score[k]) {k = j;}}t = score[k];score[k] = score[i];score[i] = t;}
}int Fail(float score[], int n) {int i, k = 0;for (i = 0; i < n; i++) {if (score[i] < 60) {k++;}}return k;
}int main() {int i;float score[10];for (i = 0; i < 10; i++) {scanf("%f", &score[i]);}save(score, 10);load(score, 10);sort(score, 10);printf("The Fail number is %d\n", Fail(score, 10));save(score, 10);return 0;
}