C语言基础题目汇总
使用普通方法
#include<stdio.h>
void main()
{
int a, b,temp;
printf("请分别输入两个整形:");
scanf("%d %d", &a, &b);
//从大到小
if (a < b)
{
temp = a;
a = b;
b = temp;
}
//从小到大
//if (a > b)
//{
// temp = a;
// a = b;
// b = temp;
//}
printf("max=%d,min=%d\n", a, b);
}
//请分别输入两个整形:3232 2
//max = 3232, min = 2
使用函数方法
#include<stdio.h>
void swap(int x, int y);
void main()
{
int a, b;
printf("请分别输入两个整形:");
scanf("%d %d", &a, &b);
swap(a, b);
}
void swap(int x, int y)
{
int temp;
if (x < y)
{
temp = x;
x = y;
y = temp;
}
printf("max=%d,min=%d", x, y);
}
//请分别输入两个整形:3232 4
//max = 3232, min = 4
使用指针的方法
#include<stdio.h>
void main()
{
int a, b, *p1, *p2, *p;
printf("请分别输入两个整形:");
scanf("%d %d", &a, &b);
p1 = &a;
p2 = &b;
if (a < b)
{
p = p1;
p1 = p2;
p2 = p;
}
//p1指向b,p2指向a
printf("a=%d,b=%d\n", a, b);
printf("max=%d,min=%d\n", *p1, *p2);
}
//请分别输入两个整形:2321 23
//a=2321,b=23
//max=2321,min=23
#include<stdio.h>
int main()
{
int a, b,temp;
printf("请分别输入两个整形:");
scanf("%d %d", &a, &b);
int *p1, *p2;
p1 = &a;
p2 = &b;
if (*p1 < *p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
printf("max=%d,min=%d", a, b);
}
//请分别输入两个整形:483 54
// max = 483, min = 54
使用指针+函数方法
#include<stdio.h>
void swap(int* p1, int* p2);
void main()
{
int a, b;
int* p1, *p2;
printf("请分别输入两个整形:");
scanf("%d %d", &a, &b);
p1 = &a;
p2 = &b;
swap(p1, p2);
printf("max=%d,min=%d", a, b);
}
void swap(int* p1, int* p2)
{
int temp;
if (*p1 < *p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
//请分别输入两个整形:3232 4
//max = 3232, min = 4
使用函数指针变量调用函数
#include <stdio.h>
int max, min;
void main()
{
void result(int, int);
int a, b, c;
printf("请分别输入两个整形:");
scanf("%d %d", &a, &b);
int(*p)();
p = result;
(*p)(a, b);
printf("max=%d min=%d", max,min);
}
void result(int x, int y)
{
if (x > y)
{
max = x;
min = y;
}
else
{
max = y;
min = x;
}
}
//请分别输入两个整形:32 3123
//max = 3123 min = 32
#include <stdio.h>
void main()
{
void result(int, int);
int a, b;
int *p1, *p2;
printf("请分别输入两个整形:");
scanf("%d %d", &a, &b);
int(*p)();
p = result;
p1 = &a;
p2 = &b;
(*p)(p1, p2);
printf("max=%d min=%d", a, b);
}
void result(int *x, int *y)
{
int temp;
if (*x < *y)
{
temp = *x;
*x = *y;
*y = temp;
}
}
//请分别输入两个整形:32 3123
//max = 3123 min = 32
使用普通方法
#include<stdio.h>
void main()
{
int str[3];
int max, min;
printf("请分别输入三个整形:");
for (int i = 0; i < 3; i++)
{
scanf("%d", &str[i]);
}
min = max = str[0];
for (int i = 0; i < 3; i++)
{
if (max < str[i])
{
max = str[i];
}
else if (min > str[i])
{
min = str[i];
}
}
printf("max:%d min:%d", max, min);
}
//请分别输入三个整形:1 10 100
//max : 100 min : 1
使用函数方法
#include<stdio.h>
int max, min;
void main()
{
void result(int a[]);
int str[3];
printf("请分别输入三个整形:");
for (int i = 0; i < 3; i++)
{
scanf("%d", &str[i]);
}
result(str);
printf("max:%d min:%d", max, min);
}
void result(int a[])
{
min = max = a[0];
for (int i = 0; i < 3; i++)
{
if (max < a[i])
{
max = a[i];
}
else if (min > a[i])
{
min = a[i];
}
}
}
//请分别输入三个整形:1 100 200
//max : 200 min : 1
使用下标法
#include <stdio.h>
void first(int a[]);
int max, min;
void main()
{
int a[3];
printf("请分别输入3个整数:");
for (int i = 0; i < 3; i++)
{
scanf("%d", &a[i]);
}
first(a);
printf("max=%d,min=%d", max, min);
}
void first(int a[])
{
max = min= *a;
for (int i = 0; i < 3; i++)
{
if (max < *(a + i))
{
max = *(a + i);
}
else if (min > * (a + i))
{
min = *(a + i);
}
}
}
//请分别输入3个整数:54 27 74
//max = 74, min = 27
使用指针方法
#include <stdio.h>
void first(int* a);
int max, min;
void main()
{
int a[3];
printf("请分别输入3个整数:");
for (int i = 0; i < 3; i++)
{
scanf("%d", &a[i]);
}
first(a);
printf("max=%d,min=%d", max, min);
}
void first(int a[])
{
max = min = *a;
int* p;
for (p = a; p < (a + 3); p++)
{
if (max < *p)
{
max = *p;
}
else if (min > * p)
{
min = *p;
}
}
}
//请分别输入3个整数:21 23 87
//max = 87, min = 21
使用普通方法
#include <stdio.h>
void main()
{
int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11
使用下标法
#include <stdio.h>
void main()
{
int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", *(*(a + i) + j));
}
printf("\n");
}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11
使用指针方法
#include <stdio.h>
void main()
{
int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
int(*p)[4];
p = a;//a==*a==a[0]==&a[0]==&a[0][0]
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", *(*(p + i) + j));
}
printf("\n");
}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11
返回指针值的函数
#include <stdio.h>
void main()
{
double score[][4] = { {79.5,89.5,99,67},{67,84,60,90.5},{77,79,97,87.5},{55,76,66,88} };
double* search(double(*pointer)[4], int n);
double* p;
int m;
printf("请输入学生的序号(0-3):");
scanf("%d", &m);
p = search(score, m);
for (int i = 0; i < 4; i++)
{
printf("%5.2f\t", *(p + i));
}
}
double* search(double(*pointer)[4], int n)
{
double* pt;
pt = *(pointer + n);
return pt;
}
//请输入学生的序号(0 - 3) :3
//55.00 76.00 66.00 88.00
指针方法
#include <stdio.h>
void main()
{
double score[][4] = { {79.5,89.5,99,67},{67,84,60,90.5},{77,79,97,87.5},{55,76,66,88} };
double search(double(*pointer)[4], int n);
int m;
printf("请输入学生的序号(0-3):");
scanf("%d", &m);
search(score, m);
}
double search(double(*pointer)[4], int n)
{
for (int i = 0; i < 4; i++)
{
printf("%5.2f\t", *(*(pointer + n)+i));
}
}
//请输入学生的序号(0 - 3) :3
//55.00 76.00 66.00 88.00
使用普通方法
#include <stdio.h>
void main()
{
char a[] = "I Love FishC!";
char b[40];
int i;
for (i = 0; a[i]!='\0'; i++)
{
b[i] = a[i];
}
b[i] = '\0';
for (int i = 0; b[i]!='\0'; i++)
{
printf("%c", b[i]);
}
}
使用下标法
#include <stdio.h>
void main()
{
char a[] = "I Love FishC!";
char b[40];
int i;
for (i = 0; *(a + i) != 0; i++)
{
*(b + i) = *(a + i);
}
*(b + i) = '\0';
for (int i = 0; b[i] != '\0'; i++)
{
printf("%c", b[i]);
}
}
//I Love FishC!
使用指针方法
#include <stdio.h>
void main()
{
char a[]="I Love FishC!";
char b[40];
char *p1;
char *p2;
p1 = a;
p2 = b;
for (;*p1!='\0'; p1++,p2++)
{
*p2= *p1;
}
*p2 = '\0';
for (int i = 0; b[i]!='\0'; i++)
{
printf("%c", b[i]);
}
}
//I Love FishC!
使用普通方法
#include <stdio.h>
char copy(char from[], char to[]);
void main()
{
char a[] = "I Love FishC!";
char b[] = "I Love Chian!";
printf("a=%s\nb=%s\n", a, b);
copy(a, b);
printf("a=%s\nb=%s\n", a, b);
}
char copy(char from[], char to[])
{
int i;
for (i = 0; from[i] != '\0'; i++)
{
to[i] = from[i];
}
to[i] = '\0';
}
//a = I Love FishC!
//b = I Love Chian!
//a = I Love FishC!
//b = I Love FishC!
使用指针方法
#include <stdio.h>
void copy(char* p1, char* p2);
void main()
{
char a[] = "I Love FishC!";
char b[] = "I Love Chian!";
char* p1, * p2;
p1 = a;
p2 = b;
printf("a=%s\nb=%s\n", a, b);
copy(p1, p2);
printf("a=%s\nb=%s\n", a, b);
}
void copy(char *p1, char *p2)
{
for (; *p1 != '\0'; p1++, p2++)
{
*p2 = *p1;
}
*p2 = '\0';
}
//a = I Love FishC!
//b = I Love Chian!
//a = I Love FishC!
//b = I Love FishC!
#include<stdio.h>
void main()
{
int year;
printf("请输入一个年份:\n");
scanf("%d", &year);
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
printf("闰年");
}
else
{
printf("平年");
}
}
//请输入一个年份:
//2021
//平年
使用普通方法
#include<stdio.h>
void main()
{
int year, month, day, months, sum = 0, days;
printf("请分别输入年月日:");
scanf("%d%d%d", &year, &months, &days);
for (month = 1; month < months; month++)
{
if (month == 2)
{
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
day = 29;
}
else
{
day = 28;
}
}
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
day = 31;
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
day = 30;
}
sum = sum + day;
}
sum = sum + days;
printf("这一天是今年的第%d天", sum);
}
//请分别输入年月日:2021 3 5
//这一天是今年的第64天
使用结构体变量方法
#include<stdio.h>
void main()
{
struct date
{
int year;
int month;
int day;
}one;
int months, days=0,sum=0;
printf("请输入年月日:");
scanf("%d %d %d", &one.year,&one.month,&one.day);
for (months = 1; months < one.month; months++)
{
if (months == 2)
{
if ((one.year % 4 == 0 && one.year % 100 != 0) || (one.year % 400 == 0))
{
days = 29;
}
else
{
days = 28;
}
}
if (months == 1 || months == 3 || months == 5 || months == 7 || months == 8 || months == 10 || months == 12)
{
days = 31;
}
else if(months == 4 || months == 6 || months == 9 || months == 11)
{
days = 30;
}
sum = sum + days;
}
sum = sum + one.day;
printf("这一天是今年的第%d天", sum);
}
//请输入年月日:2021 2 9
//这一天是今年的第40天
使用结构体函数方法
#include<stdio.h>
int cal(int year, int month, int day);
void main()
{
struct date
{
int year;
int month;
int day;
}one;
int result;
printf("请输入年月日:");
scanf("%d %d %d", &one.year, &one.month, &one.day);
result=cal(one.year, one.month, one.day);
printf("这一天是今年的第%d天", result);
}
int cal(int year,int month,int day)
{
int months, days = 0,sum=0;
for (months = 1; months < month; months++)
{
if (months == 2)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
days = 29;
}
else
{
days = 28;
}
}
if (months == 1 || months == 3 || months == 5 || months == 7 || months == 8 || months == 10 || months == 12)
{
days = 31;
}
else if (months == 4 || months == 6 || months == 9 || months == 11)
{
days = 30;
}
sum = sum + days;
}
sum = sum + day;
return sum;
}
//请输入年月日:2021 2 9
//这一天是今年的第40天
#include<stdio.h>
void main()
{
int head = 16;
int foot = 40;
int chicken;
int rabbit;
rabbit = (foot-2*head)/2;
chicken = head - rabbit;
printf("兔子有:%d\n鸡有:%d", rabbit, chicken);
}
//兔子有:4
//鸡有:12
#include<stdio.h>
void main()
{
float r = 0.1;
float P = (1+r);
for (int i = 1; i < 10; i++)
{
P = P * 1.1;
}
printf("10年后增长%f百分比\n", P);
}
//10年后增长2.593743百分比
#include<stdio.h>
#include<math.h>
void main()
{
int P = 1000;
float p1, p2, p3, p4, p5;
float year1 = 0.0414;
float year2 = 0.0468;
float year3 = 0.054;
float year5 = 0.0585;
float year0 = 0.0072;
p1 = P * ((1 + year5 )* 5);
p2 = P * (1 + 2 * year2) * (1 + 3 * year3);
p3 = P * (1 + 3 * year3) * (1 + 2 * year2);
p4 = P * pow(1+year1,5);
p5 = P * pow(1 + (year0 / 4), 4*5);
printf("(1):%f (2):%f (3):%f (4):%f (5):%f\n",p1,p2,p3,p4,p5);
}
//(1):5292.500488 (2):1270.763062 (3):1270.763184 (4):1224.863770 (5):1036.621094
#include<stdio.h>
#define PI 3.1415926
void main()
{
float r,h;
float a,b,c,d,e;
printf("请分别输入圆的半径和圆柱体的高:");
scanf("%f %f", &r, &h);
a = 2.0 * PI * r;//圆周长公式:2πr
b = PI*r*r;//圆面积公式:πr²
c = 4.0*PI*r*r;//圆球表面积公式:4πr²
d = (4.0 / 3.0) * PI * r * r * r;//圆球体积公式:(4/3)πr^3
e =PI*r*r*h ;//圆柱体积公式:πr²h
printf("圆周长:%.2f 圆面积:%.2f 圆球表面积:%.2f 圆球体积:%.2f 圆柱体积:%.2f\n", a, b, c, d, e);
}
//请分别输入圆的半径和圆柱体的高:1.5 3
//圆周长 : 9.42 圆面积 : 7.07 圆球表面积 : 28.27 圆球体积 : 10.60 圆柱体积 : 21.21
#include<stdio.h>
void main()
{
float F,C;
printf("请输入一个华氏温度:");
scanf("%f", &F);
C = (5.0 / 9.0) * (F - 32.0);
printf("摄氏温度:%.2f", C);
}
//请输入一个华氏温度:87
//摄氏温度 : 30.56
普通方法
#include<stdio.h>
int main()
{
int a[50];
a[0] = 0;
a[1] = 1;
for (int i = 2; i <= 15; i++)
{
a[i] = a[i - 1] + a[i - 2];
printf("%d ", a[i]);
}
return 0;
}
//1 2 3 5 8 13 21 34 55 89 144 233 377 610
递归方法
#include <stdio.h>
void main()
{
for (int i = 0; i <= 15; i++)
{
printf("%d ", f(i));
}
}
int f(int i)
{
if (i == 0 || i == 1)
{
return 1;
}
else
{
return f(i - 1) + f(i - 2);
}
return 0;
}
//1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
#include<stdio.h>
int main()
{
char a[100];
printf("请输入密码:");
scanf("%s", &a);
for (int i = 0; a[i]!='\0'; i++)
{
if (a[i] >= 'a' && a[i] <= 'z')
{
if (a[i] > 'v')
{
printf("%c", 100 - (122 - a[i]));
}
else
{
printf("%c", a[i] + 4);
}
}
else if (a[i] >= 'A' && a[i] <= 'Z')
{
if (a[i] > 'V')
{
printf("%c", 68 - (90 - a[i]));
}
else
{
printf("%c", a[i] + 4);
}
}
else
{
printf("%c", a[i]);
}
}
return 0;
}
//请输入密码:China!
//Glmre!
#include<stdio.h>
int main()
{
int a[3][4];
int max;
int row, colum;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
scanf("%d", &a[i][j]);
}
}
max = a[0][0];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
if (a[i][j] > max)
{
max = a[i][j];
row = i;
colum = j;
}
}
}
printf("最大值为:%d\n", max);
printf("第%d行 第%d列\n", row+1,colum+1);
return 0;
}
//1 2 4 5
//12 32 123 55
//23 56 973 91
//最大值为:973
//第3行 第3列
#include<stdio.h>
void main()
{
char str[100];
char temp;
printf("请输入一个不多于5位的正整数:");
scanf("%s", str);
printf("它是%d位数\n", strlen(str));
printf("每位数字为:");
for (int i = 0; str[i]!='\0'; i++)
{
printf("%c ", str[i]);
}
printf("\n");
printf("反序数字为:");
for (int j = 0; j < strlen(str) / 2; j++)
{
temp = str[j];
str[j] = str[strlen(str) - j - 1];
str[strlen(str) - j - 1] = temp;
}
for (int k = 0; str[k] != '\0'; k++)
{
printf("%c", str[k]);
}
}
//请输入一个不多于5位的正整数:98423
//它是5位数
//每位数字为 : 9 8 4 2 3
//反序数字为 : 32489
#include<stdio.h>
void main()
{
long int I;
double money;
printf("请输入你的利润I:");
scanf("%ld", &I);
if (I <= 100000)
{
money = I * 0.1;
}
else if (I <= 200000)
{
money = 100000 * 0.1 + (I - 100000) * 0.075;
}
else if (I<=400000)
{
money = 100000 * 0.1+ 100000 * 0.075 + (I - 200000) * 0.05;
}
else if (I <= 600000)
{
money = 100000 * 0.1 + 100000 * 0.075 + 100000 * 0.05 + (I - 400000) * 0.03;
}
else if (I <= 1000000)
{
money = 100000 * 0.1 + 100000 * 0.075 + 100000 * 0.05 + 100000 * 0.03+ (I - 600000) * 0.015;
}
else
{
money = 100000 * 0.1 + 100000 * 0.075 + 100000 * 0.05 + 100000 * 0.03 + 600000 * 0.015+ (I - 1000000) * 0.01;
}
printf("奖金是:%.2f", money);
}
//请输入你的利润I:234000
//奖金是 : 19200.00
#include<stdio.h>
void main()
{
float d1, d2, d3, d4, x, y, x1, x2, x3, x4, y1, y2, y3, y4;
scanf("%f,%f",&x,&y);
int h;
x1 = 2, y1 =2, x2 = 2, y2 = -2, x3 = -2, y3 = -2, x4 = -2, y4 = 2;
d1 = (x - x1) * (x - x1) + (y - y1) * (y - y1);
d2 = (x - x2) * (x - x2) + (y - y2) * (y - y2);
d3 = (x - x3) * (x - x3) + (y - y3) * (y - y3);
d4 = (x - x4) * (x - x4) + (y - y4) * (y - y4);
if (d1 > 1 && d2 > 1 && d3 > 1 && d4 > 1)
{
h = 0;
}
else
{
h = 10;
}
printf("该点的高度为:%d",h);
}
//0.5, 0.7
//该点的高度为:0
//2.1, 2.3
//该点的高度为:10
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,k;
printf("100-200之间的素数有:");
for (i = 100; i <= 200; i++)
{
k = sqrt(i);
for (j = 2; j <= k; j++)
{
if (i % j == 0)
{
break;
}
}
if (j >= k + 1)
{
printf("%d ", i);
}
}
}
//100-200之间的素数有: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
#include<stdio.h>
#include<math.h>
void main()
{
int a;
int flag=0;
int i, j, k;
for (int a = 100; a <= 1000; a++)
{
i = a % 1000 / 100;//百位
j = a % 100 / 10;//十位
k = a % 10;//个位
if (pow(i,3) + pow(j,3) + pow(k,3) == a)
{
printf("%d ", a);
}
}
}
//153 370 371 407
#include<stdio.h>
void main()
{
int n = 1;//第10天剩下一个桃子
for (int day = 10; day > 1; day--)
{
n= (n + 1) * 2;//第一天的桃子数是第二天桃子数加1后的2倍
}
printf("第一天一共有%d个桃子\n", n);
}
//第一天一共有1534个桃子
#include<stdio.h>
void main()
{
float h = 100;
float sum=100;
for (int i = 1; i <= 10; i++)
{
h = h / 2.0;
sum = sum + (2 * h);
}
printf("共经过了%fm\n", sum);
printf("第10次反弹%fm\n", h);
}
//共经过了299.804688m
//第10次反弹0.097656m
#include<stdio.h>
void main()
{
for (int i = 0; i <= 3; i++)//输出前面4行
{
for (int j = 0; j <= 2 - i; j++)//输出空格 3-2-1-0
{
printf(" ");
}
for (int k=0;k<=2*i;k++)//输出* 1-3-5-7
{
printf("*");
}
printf("\n");
}
for (int i = 0; i <= 2; i++)//输出后面3行
{
for (int j = 0; j <= i; j++)//输出空格 1-2-3
{
printf(" ");
}
for (int k = 0; k <= 4-2 * i; k++)//输出* 5-3-1
{
printf("*");
}
printf("\n");
}
}
#include<stdio.h>
void main()
{
for (char i = 'X'; i <= 'Z'; i++)//i是A的对手,j是B的对手,k是C的对手
{
for (char j = 'X'; j <= 'Z'; j++)
{
for (char k = 'X'; k <= 'Z'; k++)
{
if (i != j && i != k && j != k)
{
if (i != 'X' && k != 'X' && k != 'Z')
{
printf("A--%c B--%c C--%c", i, j, k);
}
}
}
}
}
}
//A--Z B--X C--Y
使用普通方法
#include<stdio.h>
#define N 10
int main()
{
int a[10];
int b;
for (int i = 0; i < N; i++)
{
scanf("%d", &b);
a[i] = b;
}
for (int i = 0; i < N-1; i++)
{
for (int j = i + 1; j < N; j++)
{
if (a[j] < a[i]) {
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for (int i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
return 0;
}
//12 321 3123 11 23 123 213 31211 2444 120
//11 12 23 120 123 213 321 2444 3123 31211
使用下标法和指针方法
#include <stdio.h>
void first(int* a);
void second(int* a);
#define N 10
void main()
{
int a[N];
printf("请分别输入10个整数:");
for (int i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
first(a);
second(a);
}
void first(int a[])
{
for (int i = 0; i < N - 1; i++)
{
for (int j = i + 1; j < N; j++)
{
if (*(a + j) > * (a + i))
{
int temp = *(a + i);
*(a + i) = *(a + j);
*(a + j) = temp;
}
}
}
printf("从大到小的排序为:");
for (int i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
void second(int a[])
{
int* p1;
int* p2;
for (p1 = a; p1 < (a + (N - 1)); p1++)
{
for (p2 = p1 + 1; p2 < (a + N); p2++)
{
if (*p2 < *p1)
{
int temp = *p2;
*p2 = *p1;
*p1 = temp;
}
}
}
printf("从小到大的排序为:");
for (int i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
//请分别输入10个整数:14 17 27 82 44 77 92 36 99 65
//从大到小的排序为 : 99 92 82 77 65 44 36 27 17 14
//从小到大的排序为 : 14 17 27 36 44 65 77 82 92 99
选择排序将10个数从小到大排序
#include<stdio.h>
void main()
{
void sort(int a[], int n);
int a[10];
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
sort(a, 10);
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
}
void sort(int a[], int n)
{
int i, j, k, t;
for (i = 0; i < n - 1; i++)
{
k = i;
for (int j = i + 1; j < n; j++)
{
if (a[j] < a[k])
{
k = j;
}
if (k != i)
{
t = a[k];
a[k] = a[i];
a[i] = t;
}
}
}
}
#include<stdio.h>
#define N 3
#define M 4
void main()
{
float a[N][M];
float score[N];
float sum;
float temp=0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
scanf("%f", &a[i][j]);
}
}
for (int i = 0; i < N; i++)
{
sum = 0;
for (int j = 0; j < M; j++)
{
sum = sum + a[i][j];
}
score[i] = sum / 4.0;
}
for (int i = 0; i < N; i++)
{
printf("第%d的学生的平均成绩位:%.2f\n", i + 1, score[i]);
}
}
//94 78 87 76
//66 87 75 69
//100 98 89 77
//第1的学生的平均成绩位:83.75
//第2的学生的平均成绩位 : 74.25
//第3的学生的平均成绩位 : 91.00
使用普通方法
#include<stdio.h>
#define N 5
void main()
{
int a[N];
int temp;
for (int i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
for (int j = 0; j < N / 2; j++)
{
temp = a[j];
a[j] = a[N - j - 1];
a[N - j - 1] = temp;
}
for (int i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
}
//8 6 5 4 1
//1 4 5 6 8
使用指针方法
#include<stdio.h>
#define N 5
void swap(int a[]);
void main()
{
int a[N];
for (int i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
swap(a);
for (int i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
}
void swap(int a[])
{
int temp, * p1, * p2;
for (int i = 0; i < N / 2; i++)
{
p1 = a + i;
p2 = a + (N - 1 - i);
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
//8 6 5 4 1
//1 4 5 6 8
#include<stdio.h>
void main()
{
for (int i = 0; i <= 5; i++)
{
for (int j = 1; j <= i; j++)
{
printf("*");
}
printf("\n");
}
}
#include<stdio.h>
void main()
{
for (int i = 0; i <= 5; i++)
{
for (int j = 0; j <= i-1; j++)
{
printf(" ");
}
for (int k = 0; k <= 5; k++)
{
printf("*");
}
printf("\n");
}
}
#include<stdio.h>
void main()
{
char str[3][80];
int a = 0, b = 0, c = 0, d = 0, e = 0;
for (int i = 0; i < 3; i++)
{
gets(str[i]);
for (int j = 0; j < 80 && str[i][j] != '\0'; j++)
{
if (str[i][j] >= 'a' && str[i][j] <= 'z')
{
a++;
}
else if (str[i][j] >= 'A' && str[i][j] <= 'Z')
{
b++;
}
else if (str[i][j] >= '0' && str[i][j] <= '9')
{
c++;
}
else if (str[i][j] == ' ')
{
d++;
}
else
{
e++;
}
}
}
printf("小写字母有:%d 大写字母有:%d 数字有:%d 空格有:%d 其他字符有:%d\n", a, b, c, d,e);
}
//I am a student.
//123456
//ASDFG
//小写字母有 : 10 大写字母有 : 6 数字有 : 6 空格有 : 3 其他字符有 : 1
递归方法
#include<stdio.h>
void main()
{
int result(int a, int b);
int a, b, str;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
str = result(a, b);
printf("最大公约数:%d\n", str);
printf("最小公倍数:%d", a * b/ str);
}
int result(int a, int b)
{
if (a == 0)
{
return b;
}
else
{
return result(b % a, a);
}
}
//请输入两个整数:12 15
//最大公约数 : 3
//最小公倍数 : 60
普通方法
#include<stdio.h>
void main()
{
int m, n,sum;
scanf_s("%d %d",&m,&n);
sum = m * n;
while (m - n != 0)
if (m > n)
{
m = m - n;
}
else
{
n = n - m ;
}
printf("最大公约数:%d\n", m);
printf("最小公倍数:%d\n", sum/m);
}
//5 4
//最大公约数:1
//最小公倍数 : 20
#include<stdio.h>
int main()
{
int x, y, j;
int gys(int m, int n);
printf("输入两个正整数m和n:");
scanf("%d %d", &x, &y);
j = gys(x, y);
printf("最大公约数:%d\n", j);
printf("最小公倍数:%d", x*y/j);
}
int gys(int m, int n)
{
int r;
while ((r = m % n ) != 0)
{
m = n;
n = r;
}
return n;
}
//输入两个正整数m和n:4 8
// 最大公约数 : 4
// 最小公倍数 : 8
#include<stdio.h>
#include<math.h>
void main()
{
int result(int a);
int a;
printf("请输入一个整数:");
scanf("%d", &a);
result(a);
}
int result(int a)
{
int i,k;
k = sqrt(a);
for (i = 2; i <= k; i++)
{
if (a % i == 0)
{
break;
}
}
if (i >= k + 1)
{
printf("是素数");
}
else
{
printf("不是素数");
}
}
//请输入一个整数:17
//是素数
#include<stdio.h>
#include<math.h>
int main()
{
int m, i,k;
scanf("%d", &m);
for (i = 2; i <= m-1; i++)
{
if (m%i == 0)
{
break;
}
}
if (i>= m)
{
printf("yes");
}
else
{
printf("no");
}
}
#include<stdio.h>
int main()
{
void change(int b[3][3]);
int a[3][3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
scanf("%d", &a[i][j]);
}
}
change(a);
};
void change(int b[3][3])
{
int a[3][3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
a[i][j] = b[j][i];
//*(*(a+i)+j) = *(*(b + j) + i);
printf("%d ", a[i][j]);
}
printf("\n");
}
}
//1 2 3
//4 5 6
//7 8 9
//1 4 7
//2 5 8
//3 6 9
使用普通方法
#include<stdio.h>
int main()
{
void change(char str[]);
char a[100];
scanf("%s", a);
change(a);
printf("%s", a);
};
void change(char str[])
{
char temp;
for (int i = 0; i < strlen(str) / 2; i++)
{
temp = str[i];
str[i] = str[strlen(str) - i - 1];
str[strlen(str) - i - 1] = temp;
}
}
//CANADA
//ADANAC
使用指针方法
#include<stdio.h>
#define N 5
void swap(char a[]);
void main()
{
char a[100];
scanf("%s", a);
swap(a);
printf("%s", a);
}
void swap(char a[])
{
char temp, * p1, * p2;
for (int i = 0; i < strlen(a) / 2; i++)
{
p1 = a + i;
p2 = a + (strlen(a) - 1 - i);
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
//CANADA
//ADANAC
#include<stdio.h>
int main()
{
void change(char str[]);
char a[100];
scanf("%s", a);
change(a);
};
void change(char str[])
{
char a[100];
int j=0;
for (int i = 0; str[i]!='\0'; i++)
{
if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u'||
str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U')
{
a[j] = str[i];
j++;
}
a[j] = '\0';
}
for (int k = 0; a[k] != '\0'; k++)
{
printf("%c", a[k]);
}
}
//hello world
//eo
#include<stdio.h>
int main()
{
void change(char str[]);
char a[100];
scanf("%s", a);
change(a);
};
void change(char str[])
{
for (int i = strlen(str); i>0; i--)
{
str[2 * i] = str[i];
str[2 * i - 1] = ' ';
}
printf("%s", str);
}
//2008
//2 0 0 8
#include <stdio.h>
void main()
{
void longestword(char s[]);
char s[81]; //一行字符最多有81个字符
printf("input string:\n");
gets(s);
longestword(s);
}
void longestword(char s[])
{
char t[30], temp[30];
t[0] = '\0';
int j = 0;
for (int i = 0; i < strlen(s); i++)
{
j = 0;
while (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z')
{
temp[j++] = s[i++]; //将由非字母字符分割成的每个单词临时储存在temp[]中
}
temp[j] = '\0';
if (strlen(t) < strlen(temp))//t[]为储存最长单词的字符数组
{
strcpy(t, temp);//通过比较t、temp字符数组的长度,判断当前最长单词并将其储存在t中
}
}
printf("the longest word:\n");
puts(t);
}
//input string:
//I am Student fuck you Happying
//the longest word :
//Happying
//I 0<1 t=I
//am 1<2 t=am
//student 2<7 t=Student
//fuck 7>4 t=Student
//you 7>3 t=Student
//Happying 7<9 t=Happying
#include <stdio.h>
void main()
{
void change(char s[]);
char s[20];
scanf("%s", s);
change(s);
printf("%s", s);
}
void change(char s[])
{
char temp;
for (int i = 0; i < strlen(s) - 1; i++)
{
for (int j = i + 1; j < strlen(s); j++)
{
if (s[j] < s[i])
{
temp = s[j];
s[j] = s[i];
s[i] = temp;
}
}
}
}
//reputation
//aeinoprttu
#include <stdio.h>
void main()
{
int max(int a, int b, int c, int d);
int max_2(int x, int y);
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
int result = max(a,b,c,d);
printf("max:%d", result);
}
int max(int a, int b, int c, int d)
{
return max_2(max_2(max_2(a, b), c), d);
}
int max_2(int x, int y)
{
return x > y ? x : y;
}
//1 100 200 400
//max:400
//1 100 200 400
//max:400
#include<stdio.h>
void main()
{
void convert(int n);
int a;
printf("请输入一个整数:");
scanf("%d", &a);
if (a < 0)//如果为负数先输出'-'和' ',然后改数变成正数
{
putchar('-');
putchar(' ');
a = -a;
}
convert(a);
}
void convert(int n)//递归函数 123
{
int i;
if ((i = n / 10) != 0)//i=12 i=1 i=0
{
convert(i);
}
putchar(n%10+'0');
putchar(' ');
}
//请输入一个整数:3123
//3 1 2 3
#include<stdio.h>
int main()
{
int recursion(int n);
int a,result;
printf("请输入一个整形:");
scanf("%d", &a);
result = recursion(a);
printf("%d的阶乘为:%d\n",a,result);
}
int recursion(int n)
{
int temp;
if (n < 0)
{
printf("输入错误\n");
}
else if (n==0||n==1)//退出程序条件
{
temp = 1;
}
else
{
temp = recursion(n - 1) * n;
}
return temp;
}
//请输入一个整形:4
//4的阶乘为 : 24
使用普通程序
#include<stdio.h>
int main()
{
int a=4;
int c=1;
for (int i = 1; i <=a; i++)
{
c *= i;
}
printf("%d的阶乘为:%d", a,c);
}
//4的阶乘为 : 24
#include<stdio.h>
int first(char str[100], char a);
void main()
{
char str[100];
char a;
printf("请输入一段字符:");
scanf("%s", &str);
printf("请输入要删除的一个字符:");
scanf(" %c", &a);
first(str, a);
printf("结果为:%s\n", str);
}
int first(char str[100], char ch)
{
int i, j;
for(i=j=0;str[i]!='\0'; i++)
{
if (str[i] != ch)
{
str[j++] = str[i];
}
}
str[j] = '\0';
}
//请输入一段字符:abcd
//请输入要删除的一个字符 : a
//结果为 : bcd
指针内容概况
指针数组
#include <stdio.h>
void main()
{
int a[5] = { 1,2,3,4,5 };
int* name[5] = {&a[0],&a[1], &a[2], &a[3], &a[4] };
for (int i = 0; i < 5; i++)
{
printf("%d ", *name[i]);
}
}
//1 2 3 4 5
#include <stdio.h>
void main()
{
int* name[5] = { 1,2,3,4,5 };
for (int i = 0; i < 5; i++)
{
printf("%d ", name[i]);
}
}
//1 2 3 4 5
指针数组
#include <stdio.h>
void main()
{
char* str[] = { "I Love You","Shift","Love You","Thank You","Giao" };
for (int i = 0; i < 5; i++)
{
printf("%s\n ", str[i]);
}
}
//I Love You
//Shift
//Love You
//Thank You
//Giao
指向指针的指针
#include <stdio.h>
void main()
{
char *str[] = {"I Love You","Shift","Love You","Thank You","Giao"};
char** p;
for (int i = 0; i < 5; i++)
{
p = str + i;
printf("%s\n", *p);
}
}
//I Love You
//Shift
//Love You
//Thank You
//Giao
#include<stdio.h>
#include<string.h>
void main()
{
void swap(char* p1, char* p2);
char str1[40],str2[40],str3[40];
printf("请分别输入3行语句:");
gets(str1);
gets(str2);
gets(str3);
if (strcmp(str1, str2) > 0)
{
swap(str1, str2);
}
if (strcmp(str1, str3) > 0)
{
swap(str1, str3);
}
if (strcmp(str2, str3) > 0)
{
swap(str2, str3);
}
printf("%s\n%s\n%s\n", str1, str2, str3);
}
void swap(char* p1, char* p2)//void swap(char p1[], char p2[])
{
char p[40];
strcpy(p, p1);
strcpy(p1, p2);
strcpy(p2, p);
}
//请分别输入3行语句:
//I studey very hard
//C language is very interesting
//He is a professfor
//C language is very interesting
//He is a professfor
//I studey very hard
#include<stdio.h>
void first(int a[]);
void second(int a[]);
void third(int a[]);
int max, min;
#define N 10
void main()
{
int a[N];
first(a);
second(a);
third(a);
}
void first(int a[])
{
printf("请分别输入10位整数:");
for (int i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
}
void second(int a[])
{
min = max = *a;
int* p;
int temp;
for (p = a; p < (a + N); p++)
{
if (max < *p)
{
max = *p;
}
else if (min > * p)
{
min = *p;
}
}
for (int i = 0; i < N; i++)
{
if (a[i] == min)
{
temp = a[0];
a[0] = min;
a[i] = temp;
}
else if (a[i] == max)
{
temp = a[9];
a[9] = max;
a[i] = temp;
}
}
}
void third(int a[])
{
for (int i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
}
//请分别输入10位整数:32 24 56 78 1 98 36 33 29 6
//1 24 56 78 32 6 36 33 29 98
#include<stdio.h>
void move(int array[20], int n, int m);
void main()
{
int number[20],n,m;
printf("共有多少个数:");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &number[i]);
}
printf("向后移动多少位数:");
scanf("%d", &m);
move(number, n, m);
}
void move(int array[20], int n, int m)
{
int* p;
for (p=array+m; p < (array+n); p++ ) //(p=array; p < (array+n); p++)
{
printf("%d ", *p);
}
for (p= array; p < (array+m); p++)
{
printf("%d ", *p);
}
}
//共有多少个数:8
//12 43 65 67 8 2 7 11
//向后移动多少位数 : 4
//8 2 7 11 12 43 65 67
#include<stdio.h>
int number(char a[]);
void main()
{
char str[100];
int result=0;
printf("请输入:");
scanf("%s", &str);
result=number(str);
printf("一共%d个字符", result);
}
int number(char a[])
{
char* p1;
p1 = a;
int sum=0;
for (; *p1 != '\0'; p1++)
{
sum++;
}
return sum;
}
//请输入:China
//一共5个字符
#include<stdio.h>
void swap(char x[], char y[]);
void main()
{
char a[100] = "My name is Li jilin.";//Li jilin
char b[100] = "Mr. Zhang Haoqiang is very happy.";//Zhang Haoqiang
swap(a, b);
printf("a=%s", a);
}
void swap(char x[], char y[])
{
char* p1, * p2;
p1 = x, p2 = y;
int m=11,n1 = 4, n2 = 18;
p1 = p1 + m;//Li jilin.
p2 = p2 + n1;//Zhang Haoqiang is very happy.
for (; n1 <= n2; p1++, p2++,n1++)
{
*p1 = *p2;
}
*p1 = '\0';
}
//My name is Zhang Haoqiang
使用普通方法
#include<stdio.h>
void main()
{
char str[30];
int a = 0, b = 0, c = 0, d = 0, e = 0;
gets(str);
for (int i = 0; str[i] != '\0'; i++)
{
if (str[i] >= 'a' && str[i] <= 'z')
{
a++;
}
else if (str[i] >= 'A' && str[i] <= 'Z')
{
b++;
}
else if (str[i] >= '0' && str[i] <= '9')
{
c++;
}
else if (str[i] == ' ')
{
d++;
}
else
{
e++;
}
}
printf("小写字母有:%d 大写字母有:%d 数字有:%d 空格有:%d 其他字符有:%d\n", a, b, c, d, e);
}
//Today is 2018/8/8
//小写字母有:6 大写字母有 : 1 数字有 : 6 空格有 : 2 其他字符有 : 2
使用指针方法
#include<stdio.h>
void main()
{
char str[30];
int a = 0, b = 0, c = 0, d = 0, e = 0;
gets(str);
char* p1;
p1 = str;
for (; *p1 != '\0'; p1++)
{
if (*p1 >= 'a' && *p1 <= 'z')
{
a++;
}
else if (*p1 >= 'A' && *p1 <= 'Z')
{
b++;
}
else if (*p1 >= '0' && *p1 <= '9')
{
c++;
}
else if (*p1 == ' ')
{
d++;
}
else
{
e++;
}
}
printf("小写字母有:%d 大写字母有:%d 数字有:%d 空格有:%d 其他字符有:%d\n", a, b, c, d, e);
}
//Today is 2018/8/8
//小写字母有:6 大写字母有 : 1 数字有 : 6 空格有 : 2 其他字符有 : 2
#include<stdio.h>
#include<string.h>
void sort(char s[10][6]);
void main()
{
char str[10][6];
printf("请输入10个等长的字符串:\n");
for (int i = 0; i < 10; i++)
{
scanf("%s", str[i]);
}
sort(str);
printf("从小到大的顺序为:\n");
for (int i = 0; i < 10; i++)
{
printf("%s\n", str[i]);
}
}
void sort(char s[10][6])
{
char* p;
char temp[10];
p = temp;
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9 - i; j++)
{
if (strcmp(s[j], s[j+1]) > 0)//从小到大排序>
{
strcpy(p, s[j]);
strcpy(s[j], s[j+1]);
strcpy(s[j+1], p);
}
}
}
}
//请输入10个等长的字符串:
//China
//Japan
//Korea
//Egypt
//Nepal
//Burma
//Ghana
//sudan
//Italy
//Libya
//从小到大的顺序为 :
//Burma
//China
//Egypt
//Ghana
//Italy
//Japan
//Korea
//Libya
//Nepal
//sudan
#include<stdio.h>
void swap(int a[]);
void main()
{
int a[20];
printf("共有多少个数:");
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
swap(a, n);
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
}
void swap(int a[],int n)
{
int temp, * p1, * p2;
for (int i = 0; i < n / 2; i++)
{
p1 = a + i;
p2 = a + (n - 1 - i);
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
//共有多少个数:10
//32 24 56 78 1 98 36 33 29 6
//6 29 33 36 98 1 78 56 24 32
#include<stdio.h>
void input(struct student stu[]);
void print(struct student stu[]);
struct student
{
int num;
char name[6];
float score[3];
};
void main()
{
struct student stu[5];
input(stu);
print(stu);
}
void input(struct student stu[])
{
for (int i = 0; i < 5; i++)
{
printf("NO:");
scanf(" %d", &stu[i].num);
printf("Name:");
scanf(" %s", &stu[i].name);
for (int j = 0; j < 3; j++)
{
printf("Score:");
scanf(" %f", &stu[i].score[j]);
}
}
}
void print(struct student stu[])
{
for (int i = 0; i < 5; i++)
{
printf("%s ",stu[i].name);
printf("%d ", stu[i].num);
for (int j = 0; j < 3; j++)
{
printf("%.2f ", stu[i].score[j]);
}
printf("\n");
}
}
//NO:1
//Name : A
//Score : 67
//Score : 76
//Score : 54
//NO : 2
//Name : B
//Score : 43
//Score : 76
//Score : 87
//NO : 3
//Name : C
//Score : 65
//Score : 76
//Score : 54
//NO : 4
//Name : D
//Score : 65
//Score : 76
//Score : 23
//NO : 5
//Name : E
//Score : 43
//Score : 76
//Score : 87
//A 1 67.00 76.00 54.00
//B 2 43.00 76.00 87.00
//C 3 65.00 76.00 54.00
//D 4 65.00 76.00 23.00
//E 5 43.00 76.00 87.00
#include<stdio.h>
void input(struct student stu[]);
void average(struct student stu[]);
void print(struct student stu[]);
void maxs(struct student stu[]);
struct student
{
int num;
char name[6];
float score[4];
};
void main()
{
struct student stu[3];
input(stu);
average(stu);
print(stu);
maxs(stu);
}
void input(struct student stu[])
{
for (int i = 0; i < 3; i++)
{
printf("NO:");
scanf(" %d", &stu[i].num);
printf("Name:");
scanf(" %s", &stu[i].name);
for (int j = 0; j < 3; j++)
{
printf("Score:");
scanf(" %f", &stu[i].score[j]);
}
}
}
void average(struct student stu[])
{
float sum;
float avg=0;
for (int i = 0; i < 3; i++)
{
sum = 0;
for(int j=0;j<3;j++)
{
sum=sum+stu[j].score[i];
}
stu[i].score[3] = sum/3.0;
avg = avg + stu[i].score[3];
}
avg = avg / 3;
printf("全部课程的平均数为:%.2f\n", avg);
}
void print(struct student stu[])
{
for (int i = 0; i < 3; i++)
{
printf("%s ", stu[i].name);
printf("%d ", stu[i].num);
for (int j = 0; j < 4; j++)
{
printf("%.2f ", stu[i].score[j]);
}
printf("\n");
}
}
void maxs(struct student stu[])
{
float max=stu[0].score[0];
int a;
for (int i = 0; i < 3; i++)
{
if (max<stu[i].score[3])
{
a = i;
}
}
printf("姓名:%s 学号:%d ", stu[a].name, stu[a].num);
for (int j = 0; j < 3; j++)
{
printf("课程:%.2f ", stu[a].score[j]);
}
printf("平均分:%.2f ", stu[a].score[3]);
}
//NO:1
//Name : A
//Score : 67
//Score : 76
//Score : 54
//NO : 2
//Name : B
//Score : 43
//Score : 76
//Score : 87
//NO : 3
//Name : C
//Score : 65
//Score : 76
//Score : 54
//全部课程的平均数为 : 66.44
//A 1 67.00 76.00 54.00 58.33
//B 2 43.00 76.00 87.00 76.00
//C 3 65.00 76.00 54.00 65.00
//姓名 : B 学号 : 2 课程 : 43.00 课程 : 76.00 课程 : 87.00 平均分 : 76.00
#include<stdio.h>
void main()
{
struct student
{
int num;
char name[20];
float score;
struct student* next;
}stu[3];
for (int i = 0; i < 3; i++)
{
printf("NO:");
scanf(" %d", &stu[i].num);
printf("Name:");
scanf(" %s", &stu[i].name);
printf("Score:");
scanf(" %f", &stu[i].score);
}
struct student* head;
head = &stu[0];
stu[0].next = &stu[1];
stu[1].next = &stu[2];
stu[2].next = NULL;
do
{
printf("%d %s %.2f\n", (*head).num, (*head).name,(*head).score);
head = (*head).next;
} while (head != NULL);//符号条件执行do语句,不符合退出循环
}
//NO:1
//Name : Li
//Score : 66
//NO : 2
//Name : Ma
//Score : 78
//NO : 3
//Name : Alex
//Score : 88
//1 Li 66.00
//2 Ma 78.00
//3 Alex 88.00
#include<stdio.h>
#include<stdlib.h>
void main()
{
char str[20];
FILE* fp;
gets(str);//输入字符
char ch;
for (int i = 0; str[i] != '\0'; i++)
{
if (str[i] >= 'a' && str[i] <= 'z')
{
str[i] = str[i] - 32;//小写字母转换为大写字母
}
}
if (!(fp = fopen("test.txt", "w+")))
{
printf("文件错误");
exit(0);
}
else
{
fputs(str,fp);//将数组内容写入文件
//循环读取文件数据
rewind(fp);
ch = fgetc(fp);
while (ch!=EOF)
{
putchar(ch);
ch = fgetc(fp);
}
}
}
#include<stdio.h>
#include<math.h>
void main()
{
FILE * fp1, * fp2, * fp3;
char ch1, ch2,ch3;
char str1[50], str2[50], *str3;
if (!(fp1=fopen("A.txt", "r+")))//I LOVE CHINA
{
printf("文件错误");
return;
}
if (!(fp2=fopen("B.txt", "r+")))//I LOVE BEIJING
{
printf("文件错误");
return;
}
if (!(fp3=fopen("C.txt", "w+")))
{
printf("文件错误");
return;
}
fgets(str1, 50, fp1);//将文件A读取数据保存到数组1
fgets(str2, 50, fp2);//将文件B读取数据保存到数组2
str3 = strcat(str1,str2);//数组3=数组1+数组2
//交换顺序
char temp;
for (int i = 0; i < strlen(str3) - 1; i++)
{
for (int j = i + 1; j < strlen(str3); j++)
{
if (str3[j] < str3[i])
{
temp = str3[i];
str3[i] = str3[j];
str3[j] = temp;
}
}
}
//将交换好顺序的数组3写入文件C中
fputs(str3, fp3);
rewind(fp3);//鼠标移至文件头
ch3 = fgetc(fp3);//读取第一个字符
while (ch3 != EOF)
{
putchar(ch3);//循环输出字符
ch3=fgetc(fp3);//循环读取字符
}
}
// ABCEEEGHIIIIIJLLNNOOVV
写入数据
#include <stdio.h>
void input(struct student stu[]);
void average(struct student stu[]);
void save(struct student stu[]);
struct student
{
int num;
char name[20];
float score[4];
};
void main()
{
struct student stu[5];
input(stu);
average(stu);
save(stu);
}
void input(struct student stu[])
{
for (int i = 0; i < 5; i++)
{
printf("NO:");
scanf("%d", &stu[i].num);
printf("Name:");
scanf("%s",&stu[i].name);
for (int j = 0; j < 3; j++)
{
printf("Score:");
scanf("%f", &stu[i].score[j]);
}
}
}
void average(struct student stu[])
{
int sum = 0;
for (int i = 0; i < 5; i++)
{
sum = 0;
for (int j = 0; j < 3; j++)
{
sum = sum + stu[i].score[j];
}
stu[i].score[3] = sum / 3.0;//计算该学生课程的平均分
}
}
//写入数据
void save(struct student stu[])
{
FILE* fp;
if (!(fp = fopen("stud", "wb")))
{
printf("文件错误");
return;
}
else
{
for (int i = 0; i < 5; i++)
{
if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
{
printf("文件写入错误");
fclose(fp);
}
}
}
}
读取数据
#include <stdio.h>
void load(struct student stu[]);
struct student
{
int num;
char name[20];
float score[4];
};
void main()
{
struct student stu[5];
load(stu);
}
void load(struct student stu[])
{
FILE* fp;
if (!(fp = fopen("stud", "rb")))
{
printf("文件错误");
return;
}
else
{
for (int i = 0; i < 5; i++)
{
if (fread(&stu[i], sizeof(struct student), 1, fp) != 1)
{
printf("文件读取错误");
fclose(fp);
}
}
for (int i = 0; i < 5; i++)
{
printf("%s %d ", stu[i].name, stu[i].num);
for (int j = 0; j < 4; j++)
{
printf("%.2f ", stu[i].score[j]);
}
printf("\n");
}
}
}
//1 1 76.00 65.00 45.00 62.00
//2 2 67.00 65.00 45.00 59.00
//3 3 67.00 56.00 8.00 43.67
//4 4 67.00 98.00 78.00 81.00
//5 5 98.00 98.00 67.00 87.67
#include <stdio.h>
void input(struct student stu[]);
void average(struct student stu[]);
void save(struct student stu[]);
void swap(struct student stu[]);
struct student
{
int num;
char name[20];
float score[4];
};
void main()
{
struct student stu[5];
input(stu);
average(stu);
swap(stu);
save(stu);
}
void input(struct student stu[])
{
for (int i = 0; i < 5; i++)
{
printf("NO:");
scanf("%d", &stu[i].num);
printf("Name:");
scanf("%s",&stu[i].name);
for (int j = 0; j < 3; j++)
{
printf("Score:");
scanf("%f", &stu[i].score[j]);
}
}
}
void average(struct student stu[])
{
int sum = 0;
for (int i = 0; i < 5; i++)
{
sum = 0;
for (int j = 0; j < 3; j++)
{
sum = sum + stu[i].score[j];
}
stu[i].score[3] = sum / 3.0;
}
}
void swap(struct student stu[])//根据平均数交换位置
{
struct student temp;
for (int i = 0; i < 4; i++)
{
for (int j = i+1; j < 5; j++)
{
if (stu[j].score[3] > stu[i].score[3])//根据平均数比较
{
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
}
void save(struct student stu[])
{
FILE* fp;
if (!(fp = fopen("stud", "wb")))
{
printf("文件错误");
return;
}
else
{
for (int i = 0; i < 5; i++)
{
if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
{
printf("文件写入错误");
fclose(fp);
}
}
}
}
读取数据
#include <stdio.h>
void load(struct student stu[]);
struct student
{
int num;
char name[20];
float score[4];
};
void main()
{
struct student stu[5];
load(stu);
}
void load(struct student stu[])
{
FILE* fp;
if (!(fp = fopen("stud", "rb")))
{
printf("文件错误");
return;
}
else
{
for (int i = 0; i < 5; i++)
{
if (fread(&stu[i], sizeof(struct student), 1, fp) != 1)
{
printf("文件读取错误");
fclose(fp);
}
}
for (int i = 0; i < 5; i++)
{
printf("%s %d ", stu[i].name, stu[i].num);
for (int j = 0; j < 4; j++)
{
printf("%.2f ", stu[i].score[j]);
}
printf("\n");
}
}
}
//5 5 98.00 98.00 67.00 87.67
//4 4 67.00 98.00 78.00 81.00
//1 1 76.00 65.00 45.00 62.00
//2 2 67.00 65.00 45.00 59.00
//3 3 67.00 56.00 8.00 43.67
写入数据
#include <stdio.h>
void load(struct student stu[]);
void save(struct student stu[]);
struct student
{
int num;
char name[20];
float score[4];
};
struct students
{
int num;
char name[20];
float score;
};
void main()
{
struct student stu[5];
load(stu);
save(stu);
}
void load(struct student stu[])
{
FILE* fp;
if (!(fp = fopen("stud", "rb")))
{
printf("文件错误");
return;
}
else
{
for (int i = 0; i < 5; i++)
{
if (fread(&stu[i], sizeof(struct student), 1, fp) != 1)
{
printf("文件读取错误");
fclose(fp);
}
}
}
}
void save(struct student stu[])
{
struct students stus[5];
for (int i = 0; i < 5; i++)
{
stus[i].num = stu[i].num;
strcpy(stus[i].name ,stu[i].name);
stus[i].score = stu[i].score[3];
}
FILE* fp1;
if (!(fp1 = fopen("student", "wb+")))
{
printf("文件错误");
return;
}
for (int i = 0; i < 5; i++)
{
if ((fwrite(&stus[i], sizeof(struct students), 1, fp1)) != 1)
{
printf("文件写入错误");
fclose(fp1);
}
}
}
读取数据
#include <stdio.h>
void load(struct students stu[]);
struct students
{
int num;
char name[20];
float score;
};
void main()
{
struct students stu[5];
load(stu);
}
void load(struct students stu[])
{
FILE* fp;
if (!(fp = fopen("student", "rb+")))
{
printf("文件错误");
return;
}
else
{
for (int i = 0; i < 5; i++)
{
if (fread(&stu[i], sizeof(struct students), 1, fp) != 1)
{
printf("文件读取错误");
fclose(fp);
}
}
for (int i = 0; i < 5; i++)
{
printf("%d %s %.2f\n", stu[i].num, stu[i].name, stu[i].score);
}
}
}
//5 5 87.67
//4 4 81.00
//1 1 62.00
//2 2 59.00
//3 3 43.67
#include <stdio.h>
#include<math.h>
int fact(int n)
{
int sum = 1;
for (int i = 1; i <= n; i++)
{
sum = sum * i;
}
return sum;
}
int main()
{
int n;
float result;
float sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
result=fact(i);
sum = sum + 1/result;
}
printf("%.4f", sum);
}
//5
//1.7167