N的阶乘
#include<stdio.h> // 引入标准输入输出库
#include<math.h> // 引入数学库,用于计算阶乘
int main() // 主函数
{
double i, sum = 1; // 定义变量i为double类型,sum初始化为1
int n; // 定义整型变量n
scanf("%d", &n); // 从标准输入读取一个整数并赋值给n
for(i = 1; i <= n; i++) // 循环从1到n
{
sum *= i; // 将sum乘以i,即累乘阶乘
}
printf("product = %.0f", sum); // 输出结果,保留0位小数
return 0; // 程序正常结束,返回0
}
查找整数
#include<stdio.h>
int main(){
int n,i,x,temp,flag=0; // 定义变量n、i、x、temp和flag,其中n表示数组长度,i用于循环,x表示要查找的元素,temp用于临时存储输入的数组元素,flag用于标记是否找到目标元素
scanf("%d %d",&n,&x); // 输入数组长度和要查找的元素
for(i=0;i<n;i++){ // 循环遍历数组
scanf("%d",&temp); // 输入数组元素并存储到temp中
if(temp==x) {flag=1;printf("%d",i);} // 如果temp等于x,说明找到了目标元素,将flag设为1,并输出当前元素的索引
}
if(flag==0) printf("Not Found"); // 如果循环结束后flag仍为0,说明没有找到目标元素,输出"Not Found"
}
交换最小值 最大值
#include<stdio.h>
int main()
{
int n, a[10], i, min = 0, max = 0; // 定义变量n、a数组、i、min和max
scanf("%d", &n); // 输入数组长度n
for (i = 0; i < n; i++) // 循环输入数组元素
{
scanf("%d",&a[i]);
}
for (i = 0; i < n; i++) // 寻找最小值的索引
{
if (a[min] > a[i])
{
min=i;
}
}
int b = a[0]; // 交换最小值和第一个元素的位置
a[0] = a[min];
a[min] = b;
for (i = 0; i < n; i++) // 寻找最大值的索引
{
if (a[max] < a[i])
{
max = i;
}
}
b = a[max]; // 交换最大值和最后一个元素的位置
a[max] = a[n - 1];
a[n - 1] = b;
for(i = 0; i < n; i++) // 输出排序后的数组
{
printf("%d ", a[i]);
}
return 0;
}
分段计算居民水费
#include<stdio.h> // 引入标准输入输出库
main() // 主函数
{
float x, y; // 定义两个浮点型变量x和y
scanf("%f", &x); // 从标准输入读取一个浮点数并赋值给x
if (x < 0) // 如果x小于0
{
y = 0; // 将y赋值为0
}
else if (x >= 0 && x <= 15) // 如果x大于等于0且小于等于15
{
y = (4 * x) / 3; // 计算y的值,公式为(4 * x) / 3
}
else if (x > 15) // 如果x大于15
{
y = 2.5 * x - 10.5; // 计算y的值,公式为2.5 * x - 10.5
}
printf("f(%.2f) = %.2f", x, y); // 输出结果,格式为"f(x) = y",保留两位小数
return 0; // 返回0表示程序正常结束
}
求奇数分之一序列前N项和
#include<stdio.h>
int main( )
{
int i, d, n; // 定义整型变量i、d、n
double sum; // 定义双精度浮点型变量sum
scanf("%d", &n); // 从标准输入读取一个整数,赋值给n
sum=0; // 将sum初始化为0
i=1; // 将i初始化为1
d=1; // 将d初始化为1
for(i=1; i<=n; i++){ // 循环n次
sum=sum+1.0/d; // 计算1除以d的结果,累加到sum上
d=d+2; // 将d的值加2
}
printf("sum = %.6f", sum); // 输出sum的值,保留6位小数
return 0; // 返回0,表示程序正常结束
}
求简单交错序列前N项和
#include <stdio.h>
int main() {
int N; // 定义一个整型变量N,用于存储输入的数值
scanf("%d", &N); // 从标准输入读取一个整数,并将其存储在变量N中
double sum = 0.0; // 定义一个双精度浮点型变量sum,用于存储计算结果
int sign = 1; // 定义一个整型变量sign,用于表示当前项的符号(1或-1)
int i; // 定义一个整型变量i,用于循环计数
for (i = 1; i <= N; i++) { // 使用for循环,从1到N进行迭代
double term = 1.0 / (2 * i - 1); // 计算当前项的值,即1除以(2*i-1)
sum += sign * term; // 将当前项的值乘以其符号,并累加到sum中
sign = -sign; // 更新符号,使其在每次迭代后交替为1和-1
}
printf("sum = %.6f\n", sum); // 输出计算结果,保留6位小数
return 0; // 程序正常结束,返回0
}
整数四则运算
#include <stdio.h>
// 主函数
int main() {
int A, B; // 定义两个整型变量A和B
scanf("%d %d", &A, &B); // 从标准输入读取两个整数,并分别赋值给A和B
printf("%d + %d = %d\n", A, B, A + B); // 输出A加B的结果
printf("%d - %d = %d\n", A, B, A - B); // 输出A减B的结果
printf("%d * %d = %d\n", A, B, A * B); // 输出A乘B的结果
printf("%d / %d = %d\n", A, B, A / B); // 输出A除以B的结果,注意这里可能会产生整数除法的舍入误差
return 0; // 程序正常结束,返回0
}
简单的猜数字游戏
#include<stdio.h> // 引入标准输入输出库
int main() // 主函数
{
int a=38,b; // 定义整型变量a并赋值为38,定义整型变量b
scanf("%d",&b); // 从标准输入读取一个整数并赋值给变量b
if(a>b) // 如果a大于b
{
printf("Too small!"); // 输出"Too small!"
}
else if(a<b) // 如果a小于b
{
printf("Too big!"); // 输出"Too big!"
}
else // 如果a等于b
{
printf("Good Guess!"); // 输出"Good Guess!"
}
return 0; // 程序正常结束,返回0
}
奇偶分家
#include <stdio.h> // 引入标准输入输出库
#include <math.h> // 引入数学库
int main() // 主函数
{
int n; // 定义整型变量n,用于存储输入的整数个数
int a[1001]; // 定义整型数组a,用于存储输入的整数
int i; // 定义整型变量i,用于循环计数
int ji=0,ou=0; // 定义整型变量ji和ou,分别用于统计奇数和偶数的个数,初始值都为0
scanf("%d",&n); // 从标准输入读取一个整数,赋值给n
for(i=0;i<n;i++) // 循环n次,每次循环执行以下操作
scanf("%d",&a[i]); // 从标准输入读取一个整数,赋值给数组a的第i个元素
for(i=0;i<n;i++) // 再次循环n次,每次循环执行以下操作
{
if(a[i]%2==0) // 如果数组a的第i个元素是偶数
ou++; // 将ou的值加1
else // 否则
ji++; // 将ji的值加1
}
printf("%d %d\n",ji,ou); // 输出ji和ou的值,中间用空格隔开
return 0; // 程序正常结束,返回0
}
统计指定数量学生的平均成绩与不及格人数
#include<stdio.h> // 引入标准输入输出库
main() // 主函数
{
int n, i, a, count = 0, sum = 0; // 定义整型变量n、i、a、count和sum,并初始化为0
float average; // 定义浮点型变量average
scanf("%d", &n); // 从标准输入读取一个整数,赋值给n
if (n == 0) // 如果n等于0
{
printf("average = 0.00\n"); // 输出average的值为0.00
printf("count = 0"); // 输出count的值为0
}
else // 否则
{
for (i = 0; i < n; i++) // 循环n次
{
scanf("%d", &a); // 从标准输入读取一个整数,赋值给a
sum = sum + a; // 将a的值累加到sum上
if (a < 60) // 如果a小于60
count++; // 将count的值加1
}
average = (float)sum / (float)n; // 计算平均值,并将结果赋值给average
printf("average = %.2f\n", average); // 输出average的值,保留两位小数
printf("count = %d", count); // 输出count的值
}
}
求整数的位数及各位数字之和
#include<stdio.h>
int main()
{
int N,i=0,sum=0;
scanf("%d",&N);
while(N!=0)
{
sum+=N%10;
i++;
N=N/10;
}
printf("%d %d",i,sum);
return 0;
}
判断素数
#include <stdio.h> // 引入标准输入输出库
#include <stdbool.h> // 引入布尔类型库
#include <math.h> // 引入数学库
// 判断一个数是否为质数的函数
bool isPrime(int n);
int main()
{
int n;
scanf("%d", &n); // 读取测试用例的数量
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x); // 读取每个测试用例的值
if (isPrime(x)) { // 如果该值是质数
printf("Yes\n"); // 输出 Yes
} else {
printf("No\n"); // 否则输出 No
}
}
return 0; // 程序正常结束
}
// 判断一个数是否为质数的函数实现
bool isPrime(int n)
{
if (n <= 1) return false; // 如果 n 小于等于 1,则不是质数
int sqr = (int)sqrt(n); // 计算 n 的平方根并向下取整
for (int i = 2; i <= sqr; i++) { // 从 2 到平方根遍历
if (n % i == 0) { // 如果 n 能被 i 整除,则不是质数
return false;
}
}
return true; // 否则是质数
}
}计算阶乘和
#include<stdio.h>
int main()
{
int n=0,sum=0,t=1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
t*=i;
sum+=t;
}
printf("%d",sum);
return 0;
}
找出一批学生的最高分
#include <stdio.h> // 引入标准输入输出库
int main(){
int MaxGrade = -1; // 初始化最大成绩为-1
int Grade; // 定义一个整型变量Grade用于存储输入的成绩
scanf("%d",&Grade); // 从标准输入读取一个整数赋值给Grade
while(Grade >= 0) { // 当Grade大于等于0时,执行循环
if(MaxGrade < Grade) // 如果当前成绩大于最大成绩
MaxGrade = Grade; // 更新最大成绩
scanf("%d",&Grade); // 继续从标准输入读取一个整数赋值给Grade
}
printf("%d",MaxGrade); // 输出最大成绩
return 0; // 返回0表示程序正常结束
}
将数组中的数逆序存放
#include <stdio.h> // 引入标准输入输出库
int main()
{
int n; // 定义一个整型变量n,用于存储输入的数组长度
scanf("%d", &n); // 从标准输入读取一个整数赋值给n
int arr[10]; // 定义一个整型数组arr,长度为10
int i = 0; // 定义一个整型变量i,初始值为0
for (i=0; i < n; i++) // 循环n次,将输入的n个整数存储到数组arr中
scanf("%d", &arr[i]);
i--; // 将i减1,使其指向数组arr的最后一个元素
for (int j = 0; j < n / 2; j++) // 循环n/2次,交换数组arr的前半部分和后半部分的元素
{
int temp = arr[j]; // 定义一个整型变量temp,用于存储arr[j]的值
arr[j] = arr[i]; // 将arr[i]的值赋给arr[j]
arr[i] = temp; // 将temp的值赋给arr[i]
i--; // 将i减1,使其指向数组arr的前一个元素
}
for (i = 0; i < n; i++) // 循环n次,输出数组arr的所有元素
{
if (i == n - 1) // 如果i等于n-1,表示当前元素是数组arr的最后一个元素
printf("%d", arr[i]); // 直接输出该元素
else // 否则
printf("%d ", arr[i]); // 输出该元素并在其后添加一个空格
}
}
简单的插入排序
#include<stdio.h>
int main(){
int n,i,j;
scanf("%d",&n); // 输入数组长度
int a[n+1]; // 定义一个长度为n+1的整型数组a
for(i=0;i<=n;i++) // 循环读取数组元素
scanf("%d",&a[i]);
for(i=0;i<n;i++) { // 遍历数组,将大于最后一个元素的元素与最后一个元素交换位置
if(a[i]>a[n]) {
a[i]=a[i]+a[n];
a[n]=a[i]-a[n];
a[i]=a[i]-a[n];
}
}
for(i=0;i<=n;i++) // 输出交换后的数组元素
printf("%d ",a[i]);
return 0;
}
利用数组计算斐波那契数列
#include<stdio.h>
int main(){
int i, N[47] = {1}, j = 2, m = 1; // 定义变量i、N数组、j和m,并初始化
scanf("%d", &i); // 输入一个整数i
if(i > 0){ // 如果i大于0
while(i--){ // 循环i次
N[j] = N[j-2] + N[j-1]; // 计算斐波那契数列的第j项
printf("%11d", N[j]); // 输出第j项,占11个字符宽度
if(m % 5 == 0) printf("\n"); // 如果m是5的倍数,换行
j++; // j自增
m++; // m自增
}
} else printf("Invalid."); // 如果i小于等于0,输出"Invalid."
return 0; // 返回0
}
输出数组元素
#include <stdio.h>
int main()
{
int n; // 定义一个整型变量n,用于存储输入的数组长度
scanf("%d", &n); // 从标准输入读取一个整数,并将其赋值给n
int i; // 定义一个整型变量i,用于循环计数
int a[n]; // 定义一个整型数组a,长度为n
for (i = 0; i < n; i++) // 使用for循环遍历数组a
{
scanf("%d", &a[i]); // 从标准输入读取一个整数,并将其赋值给数组a的第i个元素
/* code */
}
for (i = 1; i < n; i++) // 使用for循环遍历数组a(从第二个元素开始)
{
if (i % 3 == 1) // 如果i是3的倍数加1,即第2、5、8...个元素
printf("%d", a[i] - a[i - 1]); // 输出当前元素与前一个元素的差值
else // 否则
{
printf(" %d", a[i] - a[i - 1]); // 输出当前元素与前一个元素的差值,前面加上一个空格
}
if (i % 3 == 0) // 如果i是3的倍数,即第3、6、9...个元素
{
printf("\n"); // 输出一个换行符,使输出结果更美观
}
}
return 0; // 程序正常结束,返回0
}
方阵转置
#include<stdio.h>
int main(){
//输入
int n,a[6][6],tmp,i,j;
scanf("%d",&n); // 读取矩阵的大小
for(int i=0;i<n;i++) // 遍历行
{
for(int j=0;j<n;j++) // 遍历列
{
scanf("%d",&a[i][j]); // 读取矩阵元素
}
}
//打印
for(int i=0;i<n;i++) // 遍历行
{
for(int j=0;j<n;j++) // 遍历列
{
printf("%4d",a[j][i]); // 打印转置后的矩阵元素,注意行列顺序交换
}
printf("\n"); // 换行
}
return 0;
}
字符串转换成十进制整数
#include <stdio.h>
int main(){
char s[100],c; // 定义字符数组s和字符变量c
int n=0,i=0,flag=1; // 定义整型变量n、i和flag,分别表示字符个数、当前字符位置和负号标志
do{
scanf("%c",&c); // 读取一个字符
if((c>='a' && c<='f') || (c>='A' && c<='F') || (c>='0' && c<='9')){ // 如果字符是十六进制数或十进制数
s[i++]=c; // 将字符存入数组s
n++; // 字符个数加1
}else if(c=='-' && n==0){ // 如果字符是负号且前面没有数字
flag=0; // 设置负号标志为0
}
}while(c!='#'); // 当读取到井号时结束循环
int j=1,sum=0;; // 定义整型变量j和sum,分别表示权重和十六进制数的值
for(i=n-1;i>=0;i--){ // 从后往前遍历字符数组s
if(s[i]>='a' && s[i]<='f') sum+=j*(s[i]-'a'+10); // 如果字符是小写字母,计算其对应的十进制值并累加到sum中
else if(s[i]>='A' && s[i]<='F') sum+=j*(s[i]-'A'+10); // 如果字符是大写字母,计算其对应的十进制值并累加到sum中
else if(s[i]>='0' && s[i]<='9') sum+=j*(s[i]-'0'); // 如果字符是数字,计算其对应的十进制值并累加到sum中
j*=16; // 权重乘以16
}
if(sum==0) printf("0\n"); // 如果sum为0,输出0
else if(flag==0) printf("-%d",sum); // 如果负号标志为0,输出负号和sum
else printf("%d",sum); // 否则输出sum
return 0;
}
查找指定字符
#include <stdio.h>
int main () {
int i = 0, max = -1; // 初始化计数器i和最大值max,初始值为-1
char c1,c2; // 定义两个字符变量c1和c2
scanf("%c\n", &c1); // 读取一个字符并存储到c1中,然后换行
c2 = getchar(); // 读取一个字符并存储到c2中
// scanf("%c", &c2);
while (c2 != '\n') { // 当c2不等于换行符时执行循环
if (c2 == c1) max = i; // 如果c2等于c1,则将当前计数器i的值赋给max
c2 = getchar(); // 读取下一个字符并存储到c2中
// scanf("%c", &c2);
i++; // 计数器i加1
}
printf(max==-1?"Not Found":"index = %d",max); // 根据max的值输出结果,如果max为-1,则输出"Not Found",否则输出"index = "加上max的值
return 0; // 返回0表示程序正常结束
}
字符串逆序
#include<stdio.h> // 引入标准输入输出库
#include<string.h> // 引入字符串处理库
#define N 81 // 定义一个宏,表示数组的最大长度为81
int main() // 主函数
{
char a[N],i; // 定义一个字符数组a和一个字符变量i
int m; // 定义一个整型变量m
gets(a); // 从标准输入读取一行字符串并存储到数组a中
m=strlen(a); // 计算字符串a的长度,并将结果存储到变量m中
for(i=m-1;i>=0;i--){ // 从字符串的最后一个字符开始循环
printf("%c",a[i]); // 输出当前字符
}
return 0; // 程序正常结束,返回0
}
统计大写辅音字母
#include <stdio.h>
int main()
{
int i, count = 0; // 定义计数器count并初始化为0
char ch, str[80]; // 定义字符变量ch和字符串数组str
ch = getchar(); // 从标准输入读取一个字符并赋值给ch
for (i = 0; ch != '\n'; i++) { // 当ch不等于换行符时,执行循环
if (ch >= 'B' && ch <= 'Z' && ch != 'E' && ch != 'I' && ch != 'O' && ch != 'U') { // 如果ch是大写字母且不是元音字母(A、E、I、O、U)
count++; // 计数器count加1
}
ch = getchar(); // 继续从标准输入读取一个字符并赋值给ch
}
printf("%d", count); // 输出计数器count的值
return 0; // 程序正常结束,返回0
}
利用指针返回多个函数值
#include<stdio.h>
int main()
{
int *pmax,*pmin; //定义指针
int n,a[10],min,max,i;
pmax=&max; //将最大值的地址给指针
pmin=&min; //将最小值的地址给指针
scanf("%d",&n);
//依次输入n个数并存放在数组a中
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
*pmax=a[0]; //令最大值等于数组第一个数
*pmin=a[0]; //令最小值等于数组第一个数
//依次用数组后面的每个数作比较
for(i=1;i<n;i++){
if(a[i]>*pmax){ //当数组后面的数大于*pmax时,则取代
*pmax=a[i];
}
if(a[i]<*pmin){
*pmin=a[i]; //当数组后面的数小于*pmin时,则取代
}
}
printf("max = %d\n",max); //按照题目要求的格式输出最大最小值
printf("min = %d",min);
return 0;
}
删除字符串中指定字母
#include<stdio.h> // 引入标准输入输出库
#include<string.h> // 引入字符串处理库
void main() // 主函数
{
char a[100],*p; // 定义字符数组a和指针p
int v,i,u; // 定义整型变量v、i、u
scanf("%s",a); // 从标准输入读取一个字符串并存储到数组a中
p=a; // 将指针p指向数组a的首地址
v=strlen(p); // 计算字符串a的长度,并将结果存储到变量v中
for(i=0;i<v;i++) // 遍历字符串a中的每个字符
if(*(p+i)=='a') // 如果当前字符是'a'
{
u=i; // 将变量u的值设置为当前字符的位置
while(*(p+u+1)!='\0') // 当当前字符后面的字符不是字符串结束符时
{
*(p+u)=*(p+u+1); // 将当前字符后面的字符复制到当前字符的位置
u++; // u自增1,指向下一个字符
}
*(p+u)='\0'; // 将当前字符后面的字符替换为字符串结束符
i--; // i自减1,以便下一次循环时重新检查当前位置的字符
}
printf("%s\n",p); // 输出处理后的字符串a
}
选择法排序
#include<stdio.h> // 引入标准输入输出库
#define N h // 定义宏N为h
int main() // 主函数
{
int h; // 定义整型变量h
scanf("%d",&h); // 从标准输入读取一个整数并赋值给h
int a[N],i,j,temp; // 定义整型数组a,整型变量i、j和temp
for(i=0;i<N;i++) // 循环遍历数组a
{
scanf("%d",&a[i]); // 从标准输入读取一个整数并赋值给数组a的第i个元素
}
for(i=0;i<N-1;i++) // 外层循环,遍历数组a的前N-1个元素
{
for(j=i+1;j<N;j++) // 内层循环,遍历数组a的第i+1个元素到最后一个元素
{
if(a[i]<a[j]) // 如果数组a的第i个元素小于第j个元素
{
temp=a[i]; // 将数组a的第i个元素赋值给临时变量temp
a[i]=a[j]; // 将数组a的第j个元素赋值给数组a的第i个元素
a[j]=temp; // 将临时变量temp的值赋值给数组a的第j个元素
}
}
}
for(i=0;i<N;i++) // 循环遍历数组a
{
if(i==0) // 如果当前索引i等于0
printf("%d",a[i]); // 输出数组a的第i个元素
else printf(" %d",a[i]); // 否则输出一个空格和数组a的第i个元素
}
}
整数152的各位数字
#include<stdio.h>
int main()
{
int a,b,c; // 定义三个整型变量a、b、c
a=152%10; // 计算152除以10的余数,赋值给a
b=152/10%10; // 计算152除以10的商再除以10的余数,赋值给b
c=152/100; // 计算152除以100的商,赋值给c
printf("152 = %d + %d*10 + %d*100",a,b,c); // 输出结果
return 0; // 返回0表示程序正常结束
}