C语言考研初试,复试,,专升本,期末考试复习

3 篇文章 0 订阅
1 篇文章 0 订阅

第一章

image.png

第三章

逗号表达式
C语言中的逗号表达式是指在表达式中使用逗号分隔多个表达式(赋值运算时必须用括号括起来),其中最后一个表达式的值作为整个表达式的值。例如:

int a = 1, b = 2, c = 3;
int d = (a++, b++, c++);
printf("%d %d %d %d\n", a, b, c, d); // 输出:2 3 4 3

在上面的代码中,逗号表达式(a++, b++, c++)中包含了三个操作,分别是a++b++c++,它们会按顺序依次执行。最后一个操作c++的值为3,因此整个逗号表达式的值也为3,赋值给变量d。同时,由于a++b++也被执行了,变量ab的值也分别增加了1。
image.png
image.png

第六章数组

image.png
image.pngimage.png
在C语言中运算符sizeof确定某一数据所需要的存储字节数。
image.png
答案是D, 解析:数组a存储的是字符串,字符串默认最后加上’\0’(字符串结束符合)所以长度为7
而数组b存储的字符(字符型数组),后面不需要加上’\0’,所以长的是6
image.png
长度为6,a,b,\n
image.png
image.png
image.png
逆序存储

#include <stdio.h>
int main() {
    int m=0,a,n;
    printf("请输入一个正整数:");
    scanf("%d",&a);
    n=a;					//把输入的值保存下来 
	if(a<0) return 0;
	while(a!=0)
	{
		m=m*10+a%10;		//逆序存储 
		a=a/10;
	}
	if(m==n) printf("是回文数");
	else printf("不是回文数"); 
    return 0;
}

第七章函数

形参:是虚拟的,不占用存储单元,只有在被调的时候分配内存单元,调用结束后释放内存单元,只能是变量(局部)
image.png
image.png
image.png
extern为外部变量声明
image.png

第八章指针

image.png
image.png
image.png
image.png
//*p++<>p=(p++)<>(p)++ 先用p的值然后再对p+1
//++*p<>*p=*p+1<>++(p)
//
++p<==>p=(++p)
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

第九章数据类型

image.png
image.png
image.png
b6deb02fd1b5643a869c4462319680b.png
c3e7c8cd98520c717b2475681241f8e.png
(5)、cnum[0].y=3
image.png
s1=p; //指针回到最开始的位置,指针归零

第十章文件

image.png
image.png

文件的打开与关闭

P335
image.png
image.png

读写操作

p338
image.png
image.png
image.png
image.png

#include<stdio.h>
#include<stdlib.h>
#define N 10
int main()
{
    FILE *fp;			//定义文件指针
	char ch,filename[N]; 	//储存你想要打开的文件名   文件名:D:\cc\temp\filel.dat(tex) 
    printf("请输入所用的文件名:");
	scanf("%s",filename);
	getchar();				//用来消化最后输入的回车符
	if((fp=fopen(filename,"w"))==NULL)		//只写操作
	{
		printf("无法打开该文件!");
		exit(0);					//return 0; 
	} 
	printf("请输入一个准备存储到磁盘的字符串(以#结束):");
	ch=getchar();					//接受从键盘上输入的一个字符 
	while(ch!='#')
	{
		fputc(ch,fp);				//向磁盘文件输入一个字符
		putchar(ch);				//将输入的字符显示在屏幕上 
		ch=getchar(); 				//再接受从键盘输入的一个字符 
		
	} 
	fclose(fp);						//关闭文件
	putchar('\n'); 
    return 0;
}
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main()
{
    FILE *fp;			//定义文件指针
	char ch,filename[N]; 	//储存你想要打开的文件名   文件名:D:\cc\temp\filel.dat(txt) 
    printf("请输入所用的文件名:");
	scanf("%s",filename);
	getchar();				//用来消化最后输入的回车符
	if((fp=fopen(filename,"r"))==NULL)		//只读操作
	{
		printf("无法打开该文件!");
		exit(0);					//return 0; 
	} 
	ch=fgetc(fp);			//从文件读入一个字符,赋值给变量ch 
	while(!feof(fp))		//feof是C语言中的一个函数,用于检查文件流是否已经到达了文件的末尾。
	{						//如果文件流已经到达了文件的末尾,则feof函数返回一个非零值(通常是1),否则返回0。
		putchar(ch);		//可以替换为 ch!=EOF	或 ch!=-1
		ch=fgetc(fp); 
	}						
	fclose(fp);						//关闭文件
	putchar('\n'); 
    return 0;
}
#include<stdio.h>
#include<stdlib.h>
#define N 20
int main()
{
	FILE *fp;			//定义文件指针
	char c[N];
	int i=0,j,n=0;
	printf("请输入若干的字符,当输入#时结束输入:");
	scanf("%c",&c[n]);
	while(c[n]!='#')		//输入数据 
	{
		n++;
		scanf("%c",&c[n]);
	}
	c[n]='\0';
	for(i=0;i<=n-1;i++)			//对字符进行从小到大排序 冒泡排序 
	{
		char t;
		for(j=0;j<=n-i-2;j++)
		{
			if(c[j]>c[j+1])
			{
				t=c[j];
				c[j]=c[j+1];
				c[j+1]=t;
			}
		}
	} 
	if((fp=fopen("D:\\file3.txt","w"))==NULL)		//打开文件,写文件 
	{
		printf("文件打开失败!");
		exit(0);
	}
		
	n=0;
	while(c[n]!='\0')
	{
		fputc(c[n],fp);			//将字符写入文件中 
		putchar(c[n]);			//将写入的字符输出到屏幕中 
		n++;
	} 
	fclose(fp);					//关闭文件 
	return 0; 
}

在C语言中,要以追加模式打开文件,可以使用fopen函数并指定打开模式为"a"。以下是一个示例代码:

#include <stdio.h>

int main() {
    FILE *file;
    file = fopen("example.txt", "a");
    if (file == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    
    // 写入数据到文件
    fprintf(file, "这是追加的内容\n");

    // 关闭文件
    fclose(file);
    return 0;
}

在这个示例中,fopen("example.txt", "a")会以追加模式打开example.txt文件。然后,我们使用fprintf函数向文件中写入内容。最后,使用fclose函数关闭文件。
在追加模式下打开文件后,写入的内容会被追加到文件的末尾,而不会覆盖原有内容。

易错知识点总结

在 C 语言中不带任何修饰符的浮点常量,是按**双精度(或double)**类型数据存储的
**强制转换 **
float x=3.5;
(int)x; //x=4;
一个表达式要构成C语句,必须用分号结束
C语言的语法规定:缺省复合语句符号时,else 子总是与上面最近的且尚未配对的if相结合,与书写格式无关。
image.png
答案为C 逻辑运算符II前面的为真,则后面的不用执行,直接为真。
image.png
image.png

#include <stdio.h>
#include<string.h>
int main() {
    char s[]="ehujdk";
    char *p;
    p=s;
    //strlen(p);
    int size = sizeof(s);	//计算字符串长度用sizeof,可以包括\0 
    printf("%d\n",size);
    printf("%d",strlen(p));//其它类型的数据用strlen,不包括\0 
    
    return 0;
}

% 为取模运算符(求余运算符)
取模运算符只能用于整数之间的计算,不能用于浮点数。如果其中一个或两个操作数是浮点数,则会导致编译错误
取模运算符也可以用于负数。在C语言中,对于负数的取模运算,结果的符号与被除数的符号相同。

int a = -10;
int b = 3;
int result = a % b;  // result的值为-1,因为-10除以3的余数是-1

image.png
image.png
image.png
image.png
int整型变量的值的范围是-3276832767(也就是2的15次方2的15-1次方)(2147483647)
整数常量以0开头表示八进制数,以0x开头表示十六进制数
运算顺序如果运算符的优先级相同,那么计算顺序由结合性决定,左结合性表示从左向右计算,右结合性表示从右向左计算。例如,赋值运算符是右结合的,而加减运算符是左结合的。如果不确定运算符的优先级和结合性,可以使用括号来明确表达式的计算顺序。

0开头为八进制数 比如018错误逢八进一
0x或0X开头为16进制数

**计算结果最终的数据类型问题:**分别定义了一个整型变量a和f、双精度型变量i。然后求表达式10+a+i*f结果的数据类型。 在C语言中,对应不同类型数据间的运算,将运算结果保存为精度较高的操作数类型,如整型与浮点型操作数据进行相关的运算,运算结果被自动保存为浮点型。在本题给出的运算表达式中,参与运算的操作数精度最高的为双精度型,因此,最后的计算结果应该被保存为双精度类型,本题正确的答案选C。

对数运算在C语言中,可以使用数学库中的函数来表示对数。C语言中的数学库通常包含对数函数,可以使用这些函数来计算对数值。
常用的对数函数包括:

  • log(x):计算自然对数,即以e为底的对数
  • log10(x):计算以10为底的对数

这些函数需要包含在数学库中,因此在使用之前需要包含头文件<math.h>。例如,要计算以e为底的对数,可以使用log(x)函数:

#include <stdio.h>
#include <math.h>

int main() {
    double x = 100.0;
    double result = log(x);
    printf("自然对数值为:%f\n", result);
    return 0;
}

类似地,要计算以10为底的对数,可以使用log10(x)函数 = lnx。

在 C 语言中,会发生隐式类型转换的情况包括:

  1. 表达式中的运算符要求进行类型转换。例如,如果一个操作数是整型,而另一个操作数是浮点型,那么整型操作数会被转换为浮点型,以便进行运算。
  2. 赋值操作。如果将一个值赋给一个不同类型的变量,会进行隐式类型转换。例如,将一个整型值赋给一个浮点型变量,或者将一个长整型赋给一个整型变量。
  3. 函数调用。如果函数的参数类型与传递的实际参数类型不匹配,会进行隐式类型转换。例如,如果函数期望一个整型参数,但实际传递了一个浮点型参数,那么浮点型参数会被隐式转换为整型。
  4. 条件表达式。在条件表达式中,如果需要将不同类型的操作数转换为相同类型,会进行隐式类型转换。例如,当一个操作数是整型,而另一个是浮点型时,整型会被转换为浮点型。
    需要注意的是,隐式类型转换可能会导致精度损失或意外的结果,因此在编写代码时应谨慎使用隐式类型转换,以避免出现意料之外的行为。

如果int类型只占两个字节(16位),那么-1在有符号的情况下会以补码形式表示。补码形式下的-1是用全部位为1表示的。因此,-1的补码在16位int中表示为:
1111 1111 1111 1111
当以有符号整数的格式(%d)输出时,-1会按照补码的规则进行解释,因此会输出-1。
当以无符号整数的格式(%u)输出时,-1会被当作一个非常大的无符号整数来输出。在16位int中,1111 1111 1111 1111会被解释为65535。
因此,如果int类型只占两个字节,这段代码的输出可能是:

-1,65535

在计算机中,**字节和位之间有如下的关系**:
1 字节(byte)等于 8 位(bit)。这意味着一个字节包含了 8 个二进制位。每个二进制位可以表示 0 或 1,因此一个字节可以表示 2^8 = 256 种不同的状态(从 0 到 255)。
字节是计算机存储和处理数据的基本单位,而位是最小的数据单元。通常情况下,计算机中的数据都是以字节为单位进行存储和处理的。
在不同的计算机架构中,字节的大小可以有所不同,但通常情况下,一个字节被定义为包含 8 位。

**文件中定义全局变量的作用域为:从定义该变量位置开始到文件结束**

在C语言中,我们可以通过下标变量或指针来逐个访问数组中的元素,但不能直接一次引用整个数组。

![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1702384051989-6949b057-5ce1-4324-9a4f-f22378d31a5f.png#averageHue=%23f9f9f9&clientId=u64af2f64-8553-4&from=paste&height=293&id=u1a119710&originHeight=677&originWidth=626&originalType=binary&ratio=1.375&rotation=0&showTitle=false&size=47314&status=done&style=none&taskId=ua021c88b-c751-4183-bd21-51e87604b36&title=&width=271.2727355957031)![3060e34bd977912ec1368dbe593f6f0.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/35305054/1702384070101-dc420d64-f229-4c72-a87b-a13df7af291a.jpeg#averageHue=%23f8f8f8&clientId=u64af2f64-8553-4&from=paste&height=226&id=u04391317&originHeight=738&originWidth=1478&originalType=binary&ratio=1.375&rotation=0&showTitle=false&size=109337&status=done&style=none&taskId=ubc6c86bf-4fee-4bf8-ad48-9193bd06a31&title=&width=451.727294921875)

| **.** | 成员选择(对象) | 对象.成员名 |
| --- | --- | --- |
| **->** | 成员选择(指针) | 对象指针->成员名 |

优先级比 ++ 高

![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1702384342329-a9ebdf8c-58b3-4164-bfa7-705c097d314c.png#averageHue=%23f9f9f9&clientId=u879b55d8-4990-4&from=paste&height=217&id=u8815a9a4&originHeight=346&originWidth=485&originalType=binary&ratio=1.375&rotation=0&showTitle=false&size=22370&status=done&style=none&taskId=ub3d7704d-1eb2-4cb9-8191-a9d7ae60f8d&title=&width=304.727294921875)

在C语言中,**字符串通常被表示为字符数组**,因为C语言中没有内置的字符串类型。字符串是由字符数组组成的,以空字符 '\0' 结尾。
所以,可以说字符串通常是字符数组,但需要注意的是,**字符数组不一定是字符串**。只有以空字符结尾的字符数组才能被视为字符串。

![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1702560252080-84658541-345c-4ecf-8837-fe4cba651bbc.png#averageHue=%23f0eeee&clientId=u03e4ba4d-b863-4&from=paste&height=89&id=u3b65bfd9&originHeight=122&originWidth=1023&originalType=binary&ratio=1.375&rotation=0&showTitle=false&size=76552&status=done&style=none&taskId=u4e514312-57ba-4f69-acf4-3b67425e886&title=&width=744)										a_(b_(c*(d+exp(x))+y)+log(z))
在C语言中,unsigned关键字用于修饰整型数据类型,包括:

1. unsigned char
2. unsigned short
3. unsigned int
4. unsigned long
5. unsigned long long

这些类型表示无符号整数,即不包含负数,范围从0到最大正数值。unsigned关键字用于表示这些整数类型是无符号的。
9) 两种重要的数组长度:
char al]=['a’,'b’,'c'];			数组长度为3, 字符串长度不定, sizeof(a)为3
char a[5]=[ 'a' ,'b','c']			符串长度3, sizeof(a)为 5数组长度为 5,
## 宏定义
### 不带参宏定义
#define PI 3.14
#define  M  y*y+3*y
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698148030604-9cbb1e28-59e6-4e96-9641-948ea3953bf0.png#averageHue=%23e4e4e4&clientId=u5111cc8a-447c-4&from=paste&height=175&id=u681c9de2&originHeight=343&originWidth=775&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=83335&status=done&style=none&taskId=u97fac7e0-ec70-4159-9595-c983918c3a4&title=&width=396.4000244140625)
### 带参宏定义
格式:#define 宏名(参数表)宏定义串
其中参数没有数据类型 节约内存
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698148217598-2dc716ce-7d95-4486-97e3-f3f224f7b440.png#averageHue=%23f1f1f1&clientId=u5111cc8a-447c-4&from=paste&height=258&id=u0200df30&originHeight=565&originWidth=981&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=95236&status=done&style=none&taskId=u98dc4ee8-2b1d-4cfa-b231-b21ae880c21&title=&width=448.4000244140625)
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698148440737-850da415-9903-4efa-9f31-5693d265d495.png#averageHue=%23f0f0f0&clientId=u5111cc8a-447c-4&from=paste&height=232&id=ud0b7b54b&originHeight=727&originWidth=1519&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=267696&status=done&style=none&taskId=ue3a18226-3ce8-4ec3-b460-281e14ccaaa&title=&width=485.3999938964844)
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698148581817-fda9e285-8f01-4c2a-81f8-d423c611dd53.png#averageHue=%23ece8e7&clientId=u5111cc8a-447c-4&from=paste&height=235&id=ua71e7dbf&originHeight=692&originWidth=1449&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=348484&status=done&style=none&taskId=u6ddd5498-346b-4123-92c5-6d74db734d5&title=&width=492.4000244140625)
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698149887511-c3c52c75-d41d-429d-9810-be4e2ea45b89.png#averageHue=%23ecebea&clientId=u5111cc8a-447c-4&from=paste&height=386&id=u999fda9f&originHeight=801&originWidth=852&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=273097&status=done&style=none&taskId=uf4e5cd8e-dcfb-465d-9635-39c4e6ceab2&title=&width=410.4000244140625)
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698150135335-a8b63a43-d5eb-4a53-83eb-818cd9b4136c.png#averageHue=%23ececec&clientId=u5111cc8a-447c-4&from=paste&height=44&id=ua3d510d9&originHeight=70&originWidth=785&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=35780&status=done&style=none&taskId=ud1041477-f6cd-41a8-9119-737603f0cde&title=&width=489.4000244140625)
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698150325190-2d400d4f-f927-489e-aab5-8cad8eb7cc38.png#averageHue=%23f2f1f1&clientId=u5111cc8a-447c-4&from=paste&height=236&id=u06d12b64&originHeight=477&originWidth=997&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=88297&status=done&style=none&taskId=ua452fe85-f9cc-480c-990d-ec1d4bf33ad&title=&width=492.4000244140625)
![image.png](https://cdn.nlark.com/yuque/0/2023/png/35305054/1698150894584-38cf8951-0485-4077-9824-792f535cadf1.png#averageHue=%23e4e3e2&clientId=u5111cc8a-447c-4&from=paste&height=114&id=u5483fcef&originHeight=142&originWidth=1307&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=80233&status=done&style=none&taskId=u7cea870c-2288-45f0-9aaf-f132818200a&title=&width=1045.6)

## 编程题
```c
#include<stdio.h>
#include<string.h>
int main()
{
    int len;
    char *p,*t;
    char ch[80];
    scanf("%s",ch);
    len=strlen(ch);
    p=ch;t=ch;
    while(*p!='\0')p++;p--;			//此时p地址指向'\0',所以需要p-- 
    printf("%c\n",*p);
    printf("%c\n",*t);
    while(p>t)
    {
        if(*p!=*t)
        {
            printf("%s不是回文",ch);
            return 0;
        }
        p--;
        t++;
    }
    printf("%s是回文",ch);
    return 0;
}
#include<stdio.h>
int main()
{
	int i,j,z;		//分别对应公鸡,母鸡,小鸡
    for(i=1;i<=100;i++)
    {
        for(j=1;j<=100;j++)
        {
            for(z=3;z<=100;z+=3)		//小鸡三只一元 
                if(i+j+z==100&&5*i+3*j+z/3*1==100)
                    printf("公鸡,母鸡,小鸡分别为:%d,%d,%d\n",i,j,z);
        }
    }
}
#include<stdio.h>
int main()
{
	int i,j,t=0;
    for(i=1;i<=1000;i++)
    {
        for(j=1;j<=i/2;j++)		//求数的因式,只用除到数的一半就行 
        	if(i%j==0)t+=j;
        if(i==t)printf("%d\n",i);
        t=0;
    }
    return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
	float i, j, sum = 0;
	for (i = 1; fabs(j) > 1e-4; i += 2)
	{
		j = pow(-1, (i - 1) / 2) * 1 / i;		//要求只判断最后一项的大小关系 
		sum += j;
	}
	printf("Π的值为:%f", sum * 4);
	return 0;
}
#include<stdio.h>
int main()
{
    int i,j;
    for(i=1;i<10;i++)
		printf("%4d",i); 			
    printf("\n--------------------------------------\n");
    for(i=1;i<=9;i++)
    {
    	for(j=1;j<=9;j++)			//输出数
    	if(j<i)printf(" ");
        else printf("%4d",i*j);		//%4d表示输出的数字占四格,自己占一格 
        printf("\n");
    }
    return 0;
}    

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,c;float p,S;
    printf("请输入三角形的三个边:");
    scanf("%d,%d,%d",&a,&b,&c);
    if((a+b>c)&&(a+c>b)&&(c+b>a))		//判断是否为三角形
    {
        p=(a+b+c)/2.0;					//半周长
        S=sqrt(p*(p-a)*(p-b)*(p-c));
        printf("%.2f",S);
    }else{
        printf("无法构成三角形!");
        return 0;
    }
	return 0;
}

image.png

#include<stdio.h>
int main()
{
    int i,j;
    for(i=100;i<1000;i++)		//也可以从i=999开始 i--
    {
    	if(555555%i==0)
            j=i;
    }
    printf("%d",j);
    return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
	float c=0,j=1;int x;
    scanf("%d",&x);
    for(int i=1;j>0.000001;i++)
    {
        j=1.0/pow(x,i);
        c+=j;
    }
    printf("c的值为:%f",c);
    return 0;
}
    
#include<stdio.h>
#define N 50
int main()
{
	char c[N];int num=0,ch=0,other=0;
	scanf("%s",c);
    for(int i=0;c[i]!='\0';i++)
    {
        if(c[i]>='0'&&c[i]<='9')
            num++;
        else if(c[i]=='+'||c[i]=='-'||c[i]=='*'||c[i]=='/'||c[i]=='%'||c[i]=='=')
            ch++;
        else other++;
    }
    printf("第一类字符有%d个\n",num);
    printf("第二类字符有%d个\n",ch);
    printf("第三类字符有%d个\n",other);
    return 0;
}



#define EOF -1
#define YES 1
#define NO 0
#include<stdio.h>
int main()
{
	int c;int inword,nw=0;
	inword=NO;
	while((c=getchar())!=EOF)
	{
		if(c=='\t'||c=='\n'||c==' ')
			inword=NO;
		else if(inword==NO)
		{
			inword=YES;
			nw++;
		}
	}
	printf("单词个数是:%d个",nw);
    return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
    int fb(int a);
    float sum,j=1,x;
    scanf("%f",&x);
    sum=x;
    for(int i=1;fabs(j)>0.000001;i++)
    {
        j=pow(-1,i)*pow(x,2*1-1)/((2*i-1)*fb(i));
        sum+=j;
    }
    printf("下列式子的近似值是:%f",sum);
    return 0;
}
int fb(int a)
{
    if(a==1)
        return 1;
    return a*fb(a-1);
}
#include<stdio.h>
int main()
{
    int k,sum1=0,sum2=0;float sum3=0;
    for(k=1;k<=100;k++)
        sum1+=k;
    for(k=1;k<=50;k++)
        sum2+=k*k;
    for(k=1;k<=10;k++)
        sum3+=1.0/k;
    sum3=sum3+sum2+sum1;
    printf("%f",sum3);
    return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
    float x,sum=0,j=1,t;
    printf("请输入要求的x值和给定误差值:");
    scanf("%f,%f",x,t);
   	for(int i=1;fabs(j)>t;i++)
    {
    	j=pow(-1,i-1)*pow(x,2*i-1)/fb(2*i-1);
        sum+=j;
    }
	printf("%f",sum);
}
int fb(int a)
{
	if(a==1||a==0)return 1;
    else return a*fb(a-1);
}
#include <stdio.h>
#define N 10
int main() {
    int a[N], num;
    printf("请输入十个整数:");
    for (int i = 0; i < N; i++) {
        scanf("%d", &num);
        int j = i - 1;
        while (j >= 0 && a[j] > num) {		//小的数据插在前面
            a[j + 1] = a[j];				//前面的数后移
            j--;
        }
        a[j + 1] = num;
    }
    printf("排序后的结果:");
    for (int i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}

#include<stdio.h>
int main()
{
	long a,t,x=0;
    printf("请输入一个正整数:");
    scanf("%ld",&a);
    while(a)
    {
    	t=a%10;
        x=x*10+t;
        a=a/10;
    }
    printf("逆序输出为:%ld",x);
    return 0;
}
#include<stdio.h>
int main()
{
    int x;
    for(x=1;;x++)
    {
        if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0)
        {
            printf("这条阶梯共有%d阶",x);
            break;
        }
    }
    return 0;
}
#include<stdio.h>
int main()
{
    int x,t,a;
    for(x=1;;x++)
    {
        if(x%8==1)
            a=x/8;
        if(t%8==1)
            a=t/8;
        if(t%8==7)
            a=t/8;
        if(x%17==4)
            t=x/17;
        if(t%17==5)
            t=x/17;
        if(t==2*a)
        {
            printf("这个自然数是:%d",&x);
            break;
        }
    }
}
        
#include<stdio.h>
#include<math.h>
int main()
{
    float x0,x1,x2,fx0,fx1,fx2;
    do
    {
    	printf("输入x的取值范围:");
        scanf("%f,%f",&x1,&x2);
        fx1=2*x1*x1*x1-4*x1*x1+3*x1-6;
        fx2=2*x2*x2*x2-4*x2*x2+3*x2-6;
    }while(fx1*fx2>0);					//保证在指定的区间内又根 
    
    do
    {
		x0=(x1+x2)/2;					//取x1和x2的中点
		fx0=2*x0*x0*x0-4*x0*x0+3*x0-6;	//求出中点处的函数值 
		if((fx0*fx1)<0)
		{
			x2=x0;
			//fx2=fx0; 
		} 
		else
		{
			x1=x0;
			//fx1=fx0;
		}
    }while(fabs((double)fx0)>=1e-5);		
    printf("x=%6.2f\n",x0);
}
#include<stdio.h>
#include<math.h>
main() {
    int n=4;
    double r=10,s,cr,c,p;		//r为圆的半径 
    s=r*r/2;					//正多边形中一个小三角形的面积 
    do{
		cr=n*s;					//正方形面积 
		p=16*r*r*r*r-64*s*s;
		c=(4*r*r-sqrt(p))/2;
		c=sqrt(c);
		s=c*r/4;
		n=2*n; 
	}while(n*s-cr>1e-10);
	printf("Π=%lf\n",cr/r/r);
   
}

#include<stdio.h>
int main()
{
	int x,a;
    for(x=1;;x++)
    {
        a=x;
        int z=5;
        while(z)			//分五次鱼 
        {
    		if(a%5==1)
    		{
				a=a-a/5-1;
				z--;
    		}
			else break;
        }
        if(z==0)
		{
			printf("至少捕获了%d条鱼",x);
			break;
		} 
    }
}
见答案
#include<stdio.h>
main()
{
    int i,j,z;		//分别对应 红,白,黑
	for(i=1;i<=3;i++)
    {
        for(j=1;j<=3;j++)
        {
            for(z=1;z<=3;z++)
            {
                if(i+j+z==8)
                    printf("红球有%d个,白球有%d个,黑球有%d个\n",i,j,z);
            }
        }
    }
}
#include<stdio.h>
main()
{
    int i,j,z;		//分别对应 大马,中马,小马 
	for(i=1;i<=100;i++)
    {
        for(j=1;j<=100;j++)
        {
            for(z=2;z<=100;z+=2)
            {
                if(3*i+2*j+z/2==100&&i+j+z==100)	//100只马托100件货物 
                    printf("大马有%d个,中马有%d个,小马有%d个\n",i,j,z);
            }
        }
    }
}
#include<stdio.h>
main()
{
	//一元人民币=100分
    int i,j,z;		//分别表示1分,2分,5分硬币的个数
    for(i=0;i<=100;i++)
    {
        for(j=0;j<=50;j++)
        {
            for(z=0;z<=20;z++)
            {
            	if(i+2*j+5*z==100)
                    printf("兑换%d个一分硬币,%d个二分硬币,%d个五分硬币\n",i,j,z);
            }
        }
    }
}
    
    
见答案
#include<stdio.h>
main()
{
	int n,j,z,i;
    for(n=1000;n<10000;n++)
	{
		j=9*n;
		z=0;
		while(j)
		{
			i=j%10;			//取最后一位数字
			z=z*10+i;
			j=j/10;
		}
		if(n==z)
		{
			printf("N为:%d",n);
			break;
		}
	} 
}
#include<stdio.h>
main()
{
	int n,j,k,i,a[16]={0};
    for(i=1000;i<=1993;i++)
	{
		n=i;k=0;
		while(n>0)			//将十进制转化为二进制	
		{
			a[k++]=n%2;		//a[k]刚好是二进制的逆序数 
			n=n/2; 
		}
		for(j=0;j<k;j++)
		{
			if(a[j]!=a[k-j-1])break;		//判断和逆序数是否相等 
		}
		if(j>=k)
			{
				printf("%d:",i);
				for(j=0;j<k;j++)
					printf("%d",a[j]);
			    printf("\n");
						
			} 
	} 
	
}
#include<stdio.h>
main()
{
	int p,e,a,r;
    for(p=0;p<10;p++)
    {
        for(e=0;e<10;e++)
   		{
           for(a=0;a<10;a++)
   		   { 
             for(r=0;r<10;r++)
   		  	 {
                 if((p*1000+e*100+a*10+r)-(a*100+r*10+a)==(p*100+e*10+a))
                     printf("P=%d,E=%d,A=%d,R=%d\n",p,e,a,r);
             }
           }
        }
    }
}
#include<stdio.h>
main()
{
	int i,j,z,x,y;		//x表示七进制数,y表示九进制数
    for(i=49;i<513;i++)		//七进制是三位数的十进制数 
    {
        x=0;j=i;
    	while(j)
        {
            x=x*10+j%7;
            j/=7;
        }
        y=0;z=i;
        while(z)
        {
            y=y*10+z%9;
            z/=9;
        }
        int n=0,t=y;
        while(t)		//取y的逆序数 
        {
            n=n*10+t%10;
            t/=10;
        }
        if(x==n)printf("这个三位数的数字是%d",i);
    }
}
#include<stdio.h>
main()
{
    int i,j,z,m;
    for(i=6;i<=2000;i+=2)
    {
        for(j=2;j<i;j++)
        {
            for(z=2;z<=j/2;z++)
            {
                if(j%z==0) break;	//判断j是否为素数
            }
        	if(z>=j/2)				//则j是素数
            {
              	m=i-j;  
                for(z=2;z<=m/2;z++)
                	if(m%z==0) break;
                if(z>m/2)		//m也为素数
                {
                    printf("%d=%d+%d",i,j,m);
                    break;
                }
            }
        }
    }
}
#include<stdio.h>
#define N 5
int main()
{
    int i,j,k,a[N]={0},s;
	for(i=1;i<1000;i++)
    {
        j=i;k=0;
        while(j)
        {
            a[k++]=j%10;
            j/=10;
        }
        s=0;
        for(j=0;j<=k;j++)
            s=s+a[j]*a[j]*a[j];
        if(s==i)printf("%d是阿姆斯特朗数\n",i);
    }
    return 0;
}
#include<stdio.h>
int main()
{
    int j,z,m,x;
    scanf("%d",&x);
        for(j=2;j<x;j++)
        {
            for(z=2;z<=j/2;z++)
            {
                if(j%z==0) break;	//判断j是否为素数
            }
        	if(z>=j/2)				//则j是素数
            {
              	m=x-j;  
                for(z=2;z<=m/2;z++)
                	if(m%z==0) break;
                if(z>m/2)		//m也为素数
                {
                    printf("%3d=%3d+%3d\n",x,j,m);
                    break;
                }
            }
        }
    
    return 0; 
}
#include<stdio.h>
int main()
{
	int i,j,z,s;
    for(i=1;i<3000;i++)
    {
        s=0;z=0;
    	for(j=1;j<i;j++)
        {
        	if(i%j==0)			//i为A 
            {
                s=s+j;			//s为B 
            }
        }
        for(j=1;j<s;j++)
        {
            if(s%j==0)z=z+j;		//B因子之和 
        }
        if(i==z&&s<i)printf("%d和%d为亲密数\n",s,i);		//s<i的作用是去重 
    }
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
	int n;
    // 设置随机数生成器的种子
    srand(time(NULL));
    int num = (rand() % 100) + 1; 		// 生成1到100之间的随机数
    //printf("%d\n", num);
    printf("请输入一个整数字:");
	scanf("%d",&n);
    int k=1;
    while(k)
	{
		if(n>num)
		{
			printf("你猜的数太大了!\n");
			scanf("%d",&n);	
		}
		else if(n<num)
		{
			printf("你猜的数太小了!\n");
			scanf("%d",&n);	
		}
		else {
			printf("你猜对了!");
			k=0; 
		} 
        
    }
    
    return 0;
}
#include<stdio.h>
int main()
{
	int i,n=0;
	long s=1;
	for(i=1;i<=1000;i++)
	{
		s=s*i;				//计算阶乘
		while(s%10==0)		//判断个位数是否为零 
		{
			s=s/10;			//把个位上的零去掉 
			n++;			//计算0的个数 
		} 
		s=s%10; 			//s取个位上非0的数 
	}
    printf("n=%d,s=%ld",n,s); 
    return 0;
}
#include<stdio.h>
int main()
{
	int a[2][3]={1,2,3,4,5,6},i,j,b[3][2];
    for(i=0;i<2;i++)
    {
    	for(j=0;j<3;j++)
        {
            b[j][i]=a[i][j];
        }
    }
    for(i=0;i<3;i++)
    {
    	for(j=0;j<2;j++)
        {
            printf("%2d",b[i][j]);
        }
        printf("\n");
    }
}
#include <stdio.h>

int main() {
    int candies[] = {10, 2, 8, 22, 16, 4, 10, 6, 14, 20}; // 每个小孩手中的糖的数量
    int num_children = 10; // 小孩的数量
    int i, j;
    int count = 0; // 调整的次数

    while (1) { // 一直循环,直到每个小孩手中的糖的块数都一样为止
        int odd_candies = 0; // 糖块数为奇数的小孩的数量
        for (i = 0; i < num_children; i++) { // 遍历每个小孩手中的糖的块数
            int give = candies[i] / 2; // 将一半的糖分给右边的小孩
            candies[i] = candies[i] - give; // 更新当前小孩手中的糖的块数
            candies[(i+1)%num_children] += give; // 更新右边小孩手中的糖的块数  确定下一个小孩的索引,可以形成一个循环 
            if (candies[i] % 2 != 0) { // 如果当前小孩手中的糖的块数为奇数
                candies[i]++; // 向老师要一块糖
                odd_candies++; // 奇数糖块数的小孩的数量加1
            }
        }
        if (odd_candies == 0) { // 如果没有奇数糖块数的小孩了,说明调整结束
            break;
        }
        count++; // 调整的次数加1
    }

    // 输出每个小孩手中的糖的块数
    for (i = 0; i < num_children; i++) {
        printf("小孩%d手中的糖的块数为:%d\n", i+1, candies[i]);
    }

    return 0;
}

#include<stdio.h>
int main()
{
	int a[10],i,k=0;
    printf("输入一字符形式的十六进制数:");
    while((a[k]=getchar())!='\n')k++;		
    for(i=0;i<k;i++)
	{
		if(a[i]>='1'&&a[i]<='9')
			a[i]=a[i]-'1'+1;
        else if(a[i]>='A'&&a[i]<='F')
            a[i]=a[i]-'A'+10;
        else if(a[i]>='a'&&a[i]<='f')
		    a[i]=a[i]-'a'+10;    
        else printf("输入错误!"); 	
    }
    for(i=0;i<k;i++)
    {
		printf("对应的十进制数为:%d",a[i]);
    }
    return 0;
}
#include<stdio.h>
#define N 50
int main()
{
	int i,k=0,n;
	char c[N];
    printf("输入十制整数:");
    scanf("%d",&n);
    i=n;
    while(i)
    {
		c[k]=i%2-1+'1';
		k++;
		i/=2;
	}
    for(i=k-1;i>=0;i--)
    {
		printf("%c",c[i]);
    }
    return 0;
}
#include<stdio.h>
#define N 50
int main()
{
	int i,k=0,n;
	char c[N];
    printf("输入十制整数:");
    scanf("%d",&n);
    i=n;
    while(i)
    {
		c[k]=i%2-1+'1';
		k++;
		i/=2;
	}
    for(i=k-1;i>=0;i--)
    {
		printf("%c",c[i]);
    }
    return 0;
}
#include<stdio.h>
int main()
{
	int i,j,k,a[2][100]={0},m=0,n,r=1;
	printf("输入数据的个数: ");
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[0][i]); 
	while(m<=n)		//m记录已经登记过的数的个数
	{
		for(i=0;i<n;i++)
		{
			if(a[0][i]!=0)continue;
			k=i; 
			for(j=i;j<n;j++)			//寻找最小值 
				if(a[0][k]>a[0][j])k=j;
			a[1][k]=r++;				//j为名次
			m++; 
			for(j=0;j<n;j++)			//寻找相同的值
			{
				if(a[1][j]==0&&a[0][k]==a[0][j])
				{
					a[1][j]=a[1][k];
					m++;
				}
			}
			break; 
		}
	} 
	for(j=0;j<n;j++)
	{
		printf("%d",a[1][j]);
    }
	return 0;
}
//有问题,见答案
#include<stdio.h>
#include<math.h>
int main()
{
	int i,j,z;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9&&j!=i;j++)
        {
            for(z=1;z<=9&&z!=j&&z!=i;z++)
            {
                int n=i*100+j*10+z;
                if(n/sqrt(n)==sqrt(n))		//为完全平方数
                    printf("%d",n);
            }
        }
    }
    return 0;
}
                
#include<stdio.h>
int main()
{
	float x,y;
    printf("请输入x的值:");
    scanf("%f",&x);
    if(x>=0&&x<2)
        y=2.5-x;
    else if(x>=2&&x<4)
        y=2-1.5*(x-3)*(x-3); 
    else if(x>=4&&x<6)
        y=x/2-1.5;
    else 
    {
        printf("输入错误!");
        return 0;
    }
    printf("%.2f",y);
    return 0;
}
#include<stdio.h>
int main()
{
	int f(int a); 
    int i,j,n;
    for(i=100;i<1000;i++)
    {
        j=i;n=0; 
        while(j)
        {
            n=n+f(j%10);
            j/=10;
        }
        if(i==n)printf("%d",i);
    }
    return 0;
}
int f(int a)
{
    if(a==1||a==0)
        return 1;
    else
        return a*f(a-1);
}
#include<stdio.h>
#define N 3
int main()
{
	int a[N][N],i,j,k;
    for(i=0;i<N;i++)
		for(j=0;j<N;j++)
			scanf("%d",&a[i][j]);
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
			printf("%2d",a[i][j]);
		printf("\n");				
	}
		
	for(i=0;i<N;i++)
	{
		k=0;
		for(j=0;j<N;j++)	//找出行的最大值 
    	{
			if(a[i][k]<a[i][j])
				k=j;	
		}
		for(j=0;j<N;j++)	//找行最大值是否是列最小值 
		{
			if(a[i][k]>a[j][k])
				break; 
			if(j>=N-1)
			{
				printf("鞍点是a[%d][%d]=%d",i,k,a[i][k]);
				return 0;
			}
				
		}
	}
	printf("不存在鞍点!");
    return 0;
}
#include<stdio.h>
int main()
{
	int n,m,w,s;
	printf("请输入两个整数:");
	scanf("%d,%d",&m,&n);
	s=m*n;
	while(n)
	{
		w=m%n;
		m=n;
		n=w;
	}
	printf("最大公因数:%d\n",m);	
	printf("最小公倍数:%d",s/m);	
	return 0;
}

考试题

//指针法
#include<stdio.h>
#include<string.h>
#define N 20
int main()
{
	char inv(char *str,int n);
	char c[N];int n;
	printf("请输入字符串:");
	scanf("%s",c);
	n=strlen(c);
	inv(c,n);
	printf("%s",c);
    return 0;
}
void inv(char *str,int n)		//倒置 
{
	char *p,*t,temp;
	for(p=str,t=str+n-1;p<t;p++,t--)
	{
		temp=*p;
		*p=*t;
		*t=temp;
	}
}

//数组法
#include<stdio.h>
#include<string.h>
#define N 20
int main()
{
	char inv(char a[N],int n);
	char c[N];int n;
	printf("请输入字符串:");
	scanf("%s",c);
	n=strlen(c);
	inv(c,n);
	printf("%s",c);
    return 0;
}
void inv(char a[N],int n)		//倒置 
{
	char temp;int i,j;
	for(i=0,j=n-1;i<j;i++,j--)
	{
		temp=a[i];
		a[i]=a[j];
		a[j]=temp;
	}
}
#include<stdio.h>
#define N 10
int main()
{
    int del(int a[N],int n);
	int a[N],n,i,k;
    printf("请输入数组数据: ");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("请输入要删除的数是:");
    scanf("%d",&n);
	k=del(a,n);
	printf("%d",k);
    for(i=0;i<k;i++)
    {
        printf("%4d",a[i]);
    }
    return 0;
}
int del(int a[N],int n)
{
    int k=N;
    for(int i=0;i<k;i++)
    {
    	if(a[i]==n)
        {
            for(int j=i;j<k-1;j++)
            	a[j]=a[j+1];
            k--;
        }
    }
    return k;
}
#include<stdio.h>
#define N 50
int main()
{
	long fb(int a);
	int i;long sum=0;
	for(i=1;i<=N;i++)
	{
		sum+=fb(i);
	}
	printf("%ld",sum);
	return 0;
}
long fb(int a)
{
	if(a==0||a==1)
		return 1;
	else
		return a*fb(a-1);
}
#include<stdio.h>
int main()
{
	int fb(int a);
    int n;
    printf("输入一个正整数:");
    scanf("%d",&n);
    if(n<0)
    {
        printf("输入错误");
        return 0;
    }
    printf("调用后的值是:%d",fb(n));
    return 0;
}
int fb(int a)
{
    if(a==1)return 1;
    else return fb(a-1)+a+1;
}
#include<stdio.h>
#define N 10
int main()
{
    int a[N][N]={0},i,j;
    a[0][0]=1;
    for(i=1;i<N;i++)
    {
        a[i][0]=1;
        a[i][i]=1;
        for(j=1;j<i;j++)		//从第二列开始
        {
            a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<=i;j++)		//从第二列开始
            printf("%4d",a[i][j]);
        printf("\n");
    }
    return 0;
}
#include<stdio.h>
#define N 10
void sort(int a[])
{
	int t;
	for(int i=0;i<N;i++)				//冒泡排序 
	{
		for(int j=0;j<N-i-1;j++)
		{
			if(a[j]>a[j+1])
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
		}
	}
} 
int main()
{
	int a[N],i,j;
	printf("请输入十个整数:");
	for(i=0;i<N;i++)
	{
		scanf("%d",&a[i]);
	}
	sort(a);
	for(i=0;i<N;i++)
	{
		printf("%3d",a[i]);
	}
	
}
#include<stdio.h>
#define N 100
int main()
{
    char c[N];
    int num=0,letter=0,other=0,i=0;
    scanf("%s",c);
    while(c[i]!='\0')
    {
        if((c[i]>='A'&&c[i]<='Z')||(c[i]>='a'&&c[i]<='z'))
            letter++;
        else if(c[i]>='0'&&c[i]<='9')
            num++;
        else other++;
        i++;
    }
    printf("字母个数为:%d,数字个数为:%d, 其它字符个数为:%d",letter,num,other);
    return 0;
}
#include<stdio.h>
#define N 5
int main()
{
    int i,j;
    for(i=0;i<N;i++)
    {
    	for(j=i;j<N-1;j++)
    	{
			printf(" ");
		}
		for(j=1;j<=2*i+1;j++)
		{
			printf("*");
		}
		printf("\n");
	}
    return 0;
}
    *
   ***
  *****
 *******
*********
#include<stdio.h>
#define N 10
int main()
{
	int i,z,m=1,n=2;
	printf("%3d",m);
	printf("%3d",n);
    for(i=3;i<=N;i++)
    {
    	z=m+n;
        m=n;
        n=z;
        printf("%3d",z);
    }
	return 0;
}
#include<stdio.h>
int main()
{
    int i,j,s=0,t=1;
    for(i=1;i<100;i++)		//第一层的个数
    {
        s=i;t=i;
        for(j=2;j<=8;j++)	//从第二层开始求和
        {
        	t*=2;			//记录最后一层
        	s=s+t;			//记录总个数 
        }
        if(s==765)
        {
            printf("最后一层的个数为:%d",t);
            break;
        }
    }
    return 0;
}
#include<stdio.h>
#define N 3
#define M 4
int max(int a[N][M])
{
    int t=0,i,j;
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            if(t<a[i][j])
               t=a[i][j];
        }
    }
    return t;
}

int main()
{
    int a[N][M],i,j;
    printf("请输入数组数据:");
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
            scanf("%d",&a[i][j]);
    }
	printf("数组中最大的元素是:%d\n",max(a));
    
    return 0;
}

#include<stdio.h>
int main()
{
	int i,n;
	float sum=0,x=1.0,y=2.0,j; 
	printf("请输入n的值:");
	scanf("%d",&n); 
	for(i=1;i<=n;i++)
	{
		j=y;
		sum+=x/y;
		y=x;
		x=j+x;
	}
	printf("%.2f",sum);
	return 0;
	
}
#include<stdio.h>
int main()
{
    int n,i,j,sum=0;
    scanf("%d",&n);
    i=n;
    while(i)
    {
        j=i%10;
        sum+=j*j*j;
        i/=10;
    }
    if(sum==n)printf("%d是水仙花数",n);
    else printf("%d不是水仙花数",n);
    return 0;
}
#include<stdio.h>
#define N 10
int main()
{
    int a[N],n,i,t;
    printf("请输入n的值:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    	scanf("%d",&a[i]);
    }
    for(i=0;i<n/2;i++)
    {
        t=a[i];
        a[i]=a[n-i-1];
        a[n-i-1]=t;
    }
    for(i=0;i<n;i++)
    {
    	printf("%3d",a[i]);
    }
    return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
    int i,t=1;
    double sum=0,j=1;
    for(i=1;fabs(j)>=1e-4;i+=2)
    {
        j=1.0/i;
        sum+=j*t;
        t=-t;
    }
    printf("Π的值为:%lf",sum*4);
    return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
    unsigned int a,i,j,sum=0;			//无符号整型 
    scanf("%u",&a);
    i=a;
    while(i)
    {
		j=i%10;
		printf("%d+",j);
		sum+=j;
		i/=10;
	}
    printf("=%d",sum);
    return 0;
}
#include<stdio.h>
int main()
{
	int a[3][4]={{9,2,3,4},{9,8,7,6},{10,10,5,2}},i,j,t,x,y;
	t=a[0][0];x=0;y=0;
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			if(t>a[i][j])
			{
				t=a[i][j];
				x=i;y=j;
			}
		}
	}
	printf("最小值是%d,%d,%d",a[x][y],x,y);
	return 0;
}
#include<stdio.h>
#define N 2
struct Student{
	int id;
	char name[8];
	float score[2],avge;
}s[N];
int main()
{
	int i;
	for(i=0;i<N;i++)
	{
		printf("请输入学生%d的信息:",i+1);
		scanf("%d %s %f %f",&s[i].id,s[i].name,&s[i].score[0],&s[i].score[1]);
		s[i].avge=(s[i].score[0]+s[i].score[1])/2.0;
	}
	for(i=0;i<N;i++)
	{
		printf("学生%d的信息:%d,%s,%.2f,%.2f,%.2f\n",i+1,s[i].id,s[i].name,s[i].score[0],s[i].score[1],s[i].avge);
	}
	return 0;
}
#include<stdio.h>
int main()
{
	int n,a;
	printf("请输入分数:");
	scanf("%d",&n);
	if(n==100)a=9;
	else a=n/10;
	switch(a)
	{
		case 9: printf("等级为A");break;
		case 8: printf("等级为B");break;
		case 7: printf("等级为C");break;
		case 6: printf("等级为D");break;
		default: printf("等级为E");
	}
	return 0;
}
#include<stdio.h>
#define N 10
int main()
{
	int a[N]={7,15,4,12,9,3,11,0,24,6},i,j,max,temp;
	for(i=0;i<N-1;i++)			//简单选择排序,由大到小
	{
		max=i;
		for(j=i;j<N;j++)
		{
			if(a[j]>a[max])
				max=j;
		}
		temp=a[max];
		a[max]=a[i];
		a[i]=temp;
	}
	for(i=0;i<N-1;i++)			
	{
		printf("%3d",a[i]);
	}
	return 0;
}
	
#include<stdio.h>
#define N 50
int main()
{
	char c[N]={"this is a bad we are students"},*p=c;
	int count=0;
	while(*p!='\0')
	{
		if(*p!=' ')count++;
		p++;
	}
	printf("单词个数为:%d",count);
	return 0;
}
#include<stdio.h>
//#include<stdlib.h>
#define N 100
void File(char c[N]){
	FILE *fp;			//定义文件指针
	int j=0;
	if((fp=fopen("D:\\file3.txt","w"))==NULL)
	{
		printf("打开文件失败!");
		return;
	} 
	
	fputs(c,fp);		//向文件写入内容 
	puts(c);
	j++;
	fclose(fp);
}

int main()
{
	char c[N]={"I am a student to take the examination"};
	int i=0;
	while(c[i]!='\0')
	{
		if(c[i]==' ')
		{
			if(c[i-1]>='a'&&c[i-1]<='z')
				c[i-1]-=32;
		}
		i++;
	}
	printf("%s\n",c);
	File(c);
	return 0;
}

#include<stdio.h>
#include<string.h>
struct Student {
	int id;
	char name[10];
	float score[3],sum;
}Score[5];
int main()
{	
	int i;
	char rename[10];
	for(i=0;i<5;i++)
	{
		printf("请输入学生%d的信息:",i+1);
		scanf("%d %s %f %f %f",&Score[i].id,Score[i].name,&Score[i].score[0],&Score[i].score[1],&Score[i].score[2]);
		Score[i].sum=Score[i].score[0]+Score[i].score[1]+Score[i].score[2];
	}
	printf("请输入查询学生的姓名:");
	scanf("%s",rename);
	for(i=0;i<5;i++)
	{
		if(strcmp(rename,Score[i].name)==0)
		{
			printf("该学生的总成绩是:%.2f",Score[i].sum);
			break;
		}
	}
	if(i>=5) printf("未查找到该学生!");
	return 0;
}
#include<stdio.h>
#define N 10
int main()
{
	int a[N][2],i,b;
	for(i=0;i<N;i++)
	{
		printf("请输入第%d个老人的年龄:",i+1);
		scanf("%d",&a[i][0]);
		b=a[i][0]/10;
		if(b>10)b=10;
		switch(b)
		{
			case 10:a[i][1]=1100;break;
			case 9: a[i][1]=940;break;
			case 8: a[i][1]=830;break;
			case 7: a[i][1]=720;break;
			case 6: a[i][1]=610;break;
			default:a[i][1]=0;
		}	
	}
	for(i=0;i<N;i++)
	{
		printf("第%d个老人的年龄和补贴金额为:%d,%d\n",i+1,a[i][0],a[i][1]);
	}
	return 0;
}
#include<stdio.h>
#define N 10
int main()
{
	int a[N][2]={{0,45},{1,34},{2,100},{3,62},{4,75},{5,28},{6,69},{7,54},{8,15},{9,40}},i,j,temp,k;
	for(i=0;i<N;i++)
	{
		for(j=0;j<N-1-i;j++)					//冒泡排序,由小到大
		{
			if(a[j][1]>a[j+1][1])
			{
				temp=a[j+1][1];
				k=a[j+1][0];
				a[j+1][1]=a[j][1];
				a[j+1][0]=a[j][0];
				a[j][1]=temp;
				a[j][0]=k;
			}
		}
	}
	for(i=0;i<N;i++)
	{
		printf("车辆%d号,距离是%d米\n",a[i][0],a[i][1]);
	}
	return 0;
}
#include<stdio.h>
#define N 10
struct Book{
	char id[10],name[50];
	float price;
	int num;
}b[N];
int main()
{
	int i,n;
	float c[N],sum=0;
	printf("输入你要购买书的种类:");
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		printf("输入第%d本书的书号,书名,单价,数量:",i+1);
		scanf("%s %s %f %d",b[i].id,b[i].name,&b[i].price,&b[i].num);
		c[i]=b[i].price*b[i].num;
		sum+=c[i];
	}
	for(i=0;i<n;i++)
	{
		printf("输入第%d本书的书号为%.2s,书名为%.2s,单价为%f,数量为%d:金额为%f\n",i+1,b[i].id,b[i].name,b[i].price,b[i].num,c[i]);
	}
	printf("总金额为:%.2f",sum);
	return 0;
}
#include<stdio.h>
int main()
{
	float limit,sum=0;
	int i,s=1,t=0;				//t为项数
	printf("输入限制数: ");
	scanf("%f",&limit);
	for(i=1;sum<=limit;i+=2)
	{
		sum+=1.0/i*s;
		s=-s;
		t++;
	}
	printf("和为:%f,项数为:%d",sum,t);
	return 0;
}
#include<stdio.h>
int main()
{
	int max,i=1,j=1,t;				//i为前一项值,j为后一项值
	printf("请输入max的值:");
	scanf("%d",&max);
	if(max>1)
	{	
		printf("%d\n",i);
		printf("%d,前一项除以后一项为: %.2f\n",j,(float)i/j);
		while(j<max)
		{
			t=i+j;
			i=j;
			j=t;
			printf("%d,前一项除以后一项为:%.2f\n",j,(float)i/j);
		}
	}else printf("max输入错误!");
	return 0;
}
		
#include<stdio.h>
#include<math.h>
int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=abs(i-5);j++)
			printf(" ");
		for(j=1;j<=2*(5-abs(5-i))-1;j++)
			printf("*");
		printf("\n");
	}
	return 0;
}
#include<stdio.h>
struct Goods{
	int name;
	float price,score;
	struct Goods *next;
}*p;	
void f()
{
	FILE *fp;
	if((*fp=fopen("supper.txt","r"))==NULL)
	{
		printf("文件打开失败!");
		return ;
	}
	struct Goods *t'
	//t=malloce()
	
}
int main()
{
	int i;
	return 0;
}
#include<stdio.h>
int main()
{
	int range,i=1,j=1,t;
	printf("请输入range的值:");
	scanf("%d",&range);
	if(range>1)
	{
		printf("%d  %d",i,j);
		do{
			t=i+j;
			i=j;
			j=t;
			if(j<range)printf("%3d",j);
		}while(j<range);	
		
	}else printf("range输入错误!");
	return 0;
}
#include<stdio.h>
int main()
{
	int i,j,count=0,sum;
	for(i=1;i<5000;i++)
	{
		j=i;sum=0;
		for(j=1;j<=i/2;j++)
		{
			if(i%j==0)
			{
				sum+=j;
			}
		}
		if(sum==i)
		{
			printf("%5d",i);
			count++;
		}
	}
	printf("\n完数的个数为:%d",count);
	return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<(5-fabs(i-5));j++)
		{
			printf(" ");
		}
		for(j=1;j<=2*fabs(i-5)+1 ;j++)
		{
			printf("*");
		}
		printf("\n");
	}
}
#include<stdio.h>
#define N 3
struct User{
	int id;
	float price;
	float score;
};

void readUserFromFile(struct User *user)
{
	FILE *fp;
	int i;
	if((fp=fopen("D:\\file3.txt","r"))==NULL)
	{
		printf("文件打开失败!");
		return; 
	}
	for(i=0;i<N;i++)
	{
		fscanf(fp,"%d %f %f",&user[i].id,&user[i].price,&user[i].score);
	}
	fclose(fp);
}
void list(struct User user[N])
{
	int i;
	for(i=0;i<N;i++)
	{
		printf("请输入用户%d的资料:",i+1);
		scanf("%d %f %f",&user[i].id,&user[i].price,&user[i].score);
	}
}

void sort(struct User *user)
{
	struct User temp;
	int i,j;
	for(i=0;i<N;i++)
	{
		for(j=0;j<N-i-1;j++)
		{
			if(user[j].price>user[j+1].price)
			{
				temp=user[j];
				user[j]=user[j+1];
				user[j+1]=temp;
			}else if(user[j].price==user[j+1].price)
			{
				if(user[j].score<user[j+1].score)
				{
					temp=user[j];
					user[j]=user[j+1];
					user[j+1]=temp;
				}
			}
		}
	}
}
int main()
{
	int i;
	struct User user[N];
	//list(user);
	readUserFromFile(user);
	sort(user);
	printf("排序后的数据为:\n");
	for(i=0;i<N;i++)
	{
		printf("%d %.2f %.2f\n",user[i].id,user[i].price,user[i].score);
	}
	return 0;
}
		

#include<stdio.h>
double f(double x,int n)
{
	if(n==1)return x;
	else return x * f(x,n-1);
}

int main()
{
	double x,s;
	int n;
	printf("请输入x和n的值:");
	scanf("%lf,%d",&x,&n);
	if(x==1)s=1;
	else if(x==0)s=0;
	else s=f(x,n);
	printf("%.2lf",s);
	return 0;
}
#include<stdio.h>
int main()
{
	int i,j,former=-999,latter=-999,count=0,n,m;
	FILE *fp;
	if((fp=fopen("D:\\file3.txt","w+"))==NULL)
	{
		printf("文件打开失败!");
		return 0;
	}
	for(i=2;i<=300;i++)
	{	
		for(j=2;j<=i/2;j++)
		{
			if(i%j==0)break;
		}
		if(j>i/2)
		{
			fprintf(fp,"%d ",i);
			printf("%5d",i);
			former=latter;
			latter=i;
			if(latter-former==2)
			{
				count++;
				n=latter;
				m=former;
			}
		}
		
	}
	printf("\n一共有%d个双胞胎数, 最大的一对双胞胎数为:%d,%d\n",count,m,n);
	fclose(fp);
	return 0;
}
#include<stdio.h>
#define N 53
int main()
{
	
	int a[N],i,j,count=0;
	for(i=1;i<=52;i++)
	{
		a[i]=1;
	}
	for(i=2;i<=52;i++)
	{
		j=i;
		while (j<=52){
			if (a[j]==0)
				a[j]=1;
			else
				a[j]=0;
			j+=i;
		}
	}
	
	printf("正面朝上的牌序号数为:");
	for(i=1;i<=52;i++)
	{
		if(a[i]==1)
		{
			printf("%3d",i);
			count++; 
		} 	
	}
	printf("\n正面朝上一共%d张牌\n", count);
	return 0;
}
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值