通过键盘输入若干整数(个数少于50),其值在0~4的范围,用-1作为输入结束的标志,统计每个数字的个数并输出。

#include <stdio.h>
main()
{
    int i, n, a = 0, b = 0, c = 0, d = 0, e = 0;
    for (i = 0; i < 50; i++)
    {
        scanf("%d", &n);
        if (n >= 0 && n <= 4)
        {
            switch (n)
            {
            case 1: a++;    break;
            case 2: b++;    break;
            case 3: c++;    break;
            case 4: d++;    break;
            case 0: e++;    break;
            }
        }
        else if (n == -1)
            break;
        else
            printf("请输入0-4以内的数字\n");
        continue;
    }
    printf("数字1出现%d次\n", a);
    printf("数字2出现%d次\n", b);
    printf("数字3出现%d次\n", c);
    printf("数字4出现%d次\n", d);
    printf("数字0出现%d次\n", e);
}

输出2~100之间的质数,求质数通过函数实现

#include <stdio.h>
int main()
{
    int i, n, j;
    for(i=2;i<=100;i++){
        for(j=2;j<i;j++){
            if(i%j==0)break;
        }
        if(j==i)printf("%d\t",i);
    }

    }

通过函数求1!+2!+…+k!的和。

#include <stdio.h>
fun(int k);
fun(int k)
{
    int i;
    long n = 1;
    for (i = 1; i <= k; i++)
    {
        n *= i;
    }
    return n;
}

void main()
{
    int n, i;
    long s=0;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        s += fun(i);
    }
    printf("%ld", s);
}

通过键盘输入任意一此字符,统计字母、数字及其他字符的个数,当通过键盘输入“$”时结束。

#include <stdio.h>
int main()
{
    char ch;
    int b = 0, c = 0, d = 0, k = 0;
    while ((ch = getchar()) != '$')
    {
        if (ch >= '0' && ch <= '9')
            b++;
        else if (ch >= 'a' && ch <= 'z')
            c++;
        else if (ch >= 'A' && ch <= 'Z')
            c++;
        else
            d++;
    }
    printf("数字%d\t字母%d\t其他%d", b, c, d);
}

从键盘上输入一个字符串,判断输入的字符串是否为回文字符串,如输入的字符串为“ABCBA”输出“YES”;输入的字符串为“ABCB”输出“NO”。

#include <stdio.h>
#include <string.h>
main()
{
    char  a[20];
    int n,i, j;
    gets(a);
    n=strlen(a);
    for(i=0,j=n-1;i<=j;i++,j--){
        if(a[i]!=a[j]){
        break;
        }else continue;
    }
    if(i<j){
        printf("no");
    }else printf("yes");

}

有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。

#include <stdio.h>
struct student
{
    int xuehao;
    char name;
    float chengji;
};
int main()
{
    int i, n, j;
    struct student s[100];
    printf("请输入学生个数");
    scanf("%d%*c", &n);
    for (i = 0; i < n; i++)
    {
        s[i].xuehao = i + 1;
        printf("请输入学号为%d学生姓名:", i + 1);
        scanf("%s", &s[i].name);
        printf("请输入学号为%d学生的成绩:", i + 1);
        scanf("%f", &s[i].chengji);
    }
    struct student temp;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n-i-1; j++)
        {
            if (s[j].chengji > s[j + 1].chengji)
            {
                temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("学号:%d\t姓名:%c\t成绩:%.2f\n", s[i].xuehao, s[i].name, s[i].chengji);
    }
}

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。最后输出这10个整数。

#include <stdio.h>
main()
{
    int a[10], i, max, min, n = 0, m = 0;
    for (i = 0; i < 10; i++)
    {
        printf("请输入第%d个数",i+1);
        scanf("%d", &a[i]);
    }
    max = min = a[0];
    for (i = 0; i < 10; i++)
    {
        if (max < a[i])
        {
            max = a[i];
            n = i;
        }
        if (min > a[i])
        {
            min = a[i];
            m = i;
        }
    }
    a[9] = a[n];
    a[n] = max;
    if (a[0] == max && a[9] == min)
        ;
    else
    {
        a[0] = a[m];
        a[m] = min;
    }
    for (i = 0; i < 10; i++)
    {
        printf("%d  ", a[i]);
    }
}

编写程序,找出1~99之间的全部同构数。同构数是这样一组数:它出现在其平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。

#include <stdio.h>
main(){
    int i,n;
    for(i=1;i<100;i++){
        if((i*i%10==i)||(i*i%100==i)){
        printf("%d\t",i);
        }
    }
}

编写函数:void cpy(char *dest,char *src),实现字符串的拷贝。

#include <stdio.h>
void cpy(char *dest, char *src);
void cpy(char *dest, char *src)
{
    while (*dest != '\0')
    {
        dest++;
    }
    dest--;
    while (*src != '\0')
    {
        *dest++ = *src++;
    }
}

main()
{
    char a[100] = "afsdads", b[100] = "asdf";
    cpy(a, b);
    puts(a);
}

输入多个字符串,输出其中最短的第一个字符串。

#include <stdio.h>
#include <string.h>
main()
{
    char a[100], b[100];
    int n = 1;
    printf("请输入字符串");
    gets(b);
while(1){
        printf("请输入字符串");
        gets(a);
        if(strlen(a)==0)
        break;
        if (strlen(a) <= strlen(b))
        strcpy(b, a);
    }
    
    puts(b);
}

逆序输出:输入一个正整数,将该正整数逆序输出。

#include <stdio.h>
main(){
    int i=0,j,x;
    scanf("%d",&x);
    while (x)
    {
        i=i*10+x%10;
        x=x/10;
    }
    printf("%d",i);
    
}

中位数

计算有限个数的数据的中位数的方法是:把所有的同类数据按照大小的顺序排列。如果数据的个数是奇数,则中间那个数据就是这群数据的中位数;如果数据的个数是偶数,则中间那 2 个数据的算术平均值就是这群数据的中位数。现在给出 n 个正整数,求它们的中位数。

#include <stdio.h>
main()
{
    int a[100], n, i, j, x;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        printf("请输入第%d个数", i + 1);
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - i - 1; j++)
        {
            if (a[j] > a[j + 1])
            {
                x = a[j];
                a[j] = a[j + 1];
                a[j + 1] = x;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%d\t", a[i]);
    }
printf("\n");
    if (n % 2 == 1)
    {
        x = n / 2;
        printf("%d", a[x]);
    }
    else
    {
        x = n / 2;
        printf("%f", (a[x] + a[x - 1]) / 2.0);
    }
}

判断 a[N][N]是否关于主对角线对称,若对称输出 1,否则输出 0。

#include <stdio.h>
#define N 3
main(){
    int a[N][N]={1,4,5,4,2,6,5,6,3};
    int i,j,k=1;
    for(i=0;i<N;i++){
        for(j=0;j<i;j++){
            if(a[i][j]!=a[j][i]){
                k=0;
            }
        }
    }
    printf("%d",k);
}

编写函数:void cat(char *dest,char *src),实现字符串的追加。

#include <stdio.h>
main()
{
    char a[20] = "asdfasd", b[20] = "132465";
    cat(a, b);
    puts(a);
}
void cat(char *dest, char *src)
{
    while (*dest != '\0')
    {
        dest++;
    }
    dest--;
    while (*src != '\0')
    {
        *dest++ = *src++;
    }
}

有一个分数序列:2/1,3/2,5/3,8/5,13/8,……编程求这个序列的前20项之和。

#include <stdio.h>
void main(){
 	int i,t,n=20;
  	float a=2,b=1,s=0;
for(i=1;i<=n;i++)
{
s=s+a/b;
t=a;
a=a+b;
b=t;
}
 	printf("sum=%6.2f",s);
}
#include <stdio.h>
main()
{
    int i;
    float a = 0, b = 0, s = 0;
    for (i = 1; i <= 20; i++){
    a=fun(i+1);
    b=fun(i);
    s+=a*1.0/b;
    // printf("%.1f\t%.1f\t%f\n",a,b,s);
    }
    printf("%f",s);
}
int  fun(int x);
int fun(int x){
    if(x==0||x==1)return 1;
    else return fun(x-2)+fun(x-1);

}

将一个有5个元素的数组中的值(整数)按逆序重新存放。

例: 原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8

#include <stdio.h>
main()
{
    int i, a[5];
    for (i = 0; i < 5; i++)
    {
        scanf("%d", &a[i]);
    }

    for (i = 0; i < 2; i++)
    {
        int t;
        t = a[i];
        a[i] = a[5 - i - 1];
        a[5 - i - 1] = t;
    }
    for (i = 0; i < 5; i++)
    {
        printf("%d", a[i]);
    }
}

从键盘上输入一个23的矩阵,将其转秩后形成32的矩阵输出。

#include <stdio.h>
main()
{
    int i, j, a[2][3], b[3][2];
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("请输入第%d行第%d列的数字", i + 1, j + 1);
            scanf("%d", &a[i][j]);
            b[j][i] = a[i][j];
        }
    }

    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 2; j++)
        {
            printf("%d\t", b[i][j]);
        }
        printf("\n");
    }
}

求200以内(不包含200)能被7或11整除的所有奇数的个数,并求出所有偶数的和,并输出符合要求的奇数的个数和偶数的和。

#include <stdio.h>
main()
{
    int i, sum1 = 0, sum2 = 0;
    for (i = 1; i < 200; i++)
    {
        if (i % 11 == 0 || i % 7 == 0)
            if (i % 2 == 0)
                sum2 += i;
            else
                sum1++;
    }
    printf("符合要求的奇数个数为%d\t 偶数和为%d", sum1, sum2);
}

求数列中n的个数{1,12,123,1234…..123456789}的累和,1<=n<=9, 例如n=3, 就是求1,12,123的和。

#include <stdio.h>
main(){
    int i;
    int sum=0,k=0,n;
    printf("请输入一个大于等于1小于等于9的数字");
    scanf("%d",&n);
    if(n>9||n<1)printf("输入的数不和规则");
    for(i=1;i<=n;i++){
        k=k*10+i;
        sum+=k;
    }
    printf("%d",sum);
}
#include "stdio.h"
void main()
{
    int i,n,s=0,t=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
     t=t+i;
     s=s+i;
     t=t*10;
    }
    printf("和是%d",s);
}
#include<stdio.h>
main(){
    int n=0,i=1,m=0,sun=0;
    printf("请输入一个数");
    scanf("%d",&n);
    while(i<=n){
        m=m*10+i;
        sun+=m;
        i++;
    }
    printf("%d",sun); 
}

杨辉三角

#include <stdio.h>
int fun(int i, int j);

main()
{
    int i, j;
    for (i = 1; i <= 10; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d\t", fun(i, j));
        }
        printf("\n");
    }
}
int fun(int i, int j)
{
    if ( j == 1 || j == i)
        return 1;
    else 
        return fun(i - 1, j - 1) + fun(i - 1, j);
}

字母金字塔

#include <stdio.h>
main()
{
    int i, j;
    char x;
    for (i = 1; i <= 11; i++)
    {
        x = 'A';
        for (int c = 1; c <= 11 - i; c++)
            printf("  ");
        for (j = 1; j <= 2 * i - 1; j++)
        {

            if (j < i)
                printf("%c ", x++);
            else
                printf("%c ", x--);
        }

        printf("\n");
    }
}

九九乘法表

#include <stdio.h>
main()
{
    int i, j;
    for (i = 1; i <= 9; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d*%d=%d\t",j,i,i*j);
        }

        printf("\n");
    }
}

输入一个十进制整数,转换成对应的二进制并输出。

#include "stdio.h"
void  main(){
    int m, n, k,i;//定义变量
    int a[16] = { 0 };
    printf("请输入一个的数字:\n");
    scanf("%d", &n);
    printf("十进制数%d转换为二进制数是:\n", n);
    for(i = 0; i < 15; ++i) {  //for循环从0-14,最高位为符号位,本例始终为0
        m = n % 2;  //取2的余数
        k = n / 2;  //取被2整除的结果
        n = k;
        a[i] = m;  //将余数存入数组a数组中
    }
    for (i = 15; i >=0 ; i--) {  //for循环将数组中的16个元素从后往前输出
        printf("%d", a[i]);
        if (i % 4 == 0) {  //每输出4个元素,输出一个空格
            printf(" ");
        }
    }
}
#include <stdio.h>
main()
{
    int n, i, j = 0, a[100];
    scanf("%d", &n);
    for (i = 0; n > 0; i++)
    {
        a[i] = n % 2;
        n = n / 2;
        j++;
    }
    for (i = j - 1; i >= 0; i--)
    {
        printf("%d", a[i]);
    }
}

模拟用户登录,假设正确用户名为zhangsan,密码是123456,用户名和密码均正确时登录成功,用户名或密码有误时显示哪个有误,只有三次重新输入机会,三次后账号被锁定。

#include <stdio.h>
#include <string.h>
main()
{
    int  i, j, n = 0, *p, *q, x = 1;
    char yonghuming[20] = "zhangsan",mima[20] = "123456",a[20],s[20];
    for (j = 0; j < 3; j++)
    {
        printf("请输入用户名");
        gets(s);
        printf("请输入密码");
        gets(a);
    if(strcmp(yonghuming,s)!=0){
        printf("用户名错误\n");
        n++;
    }else if((strcmp(mima,a)!=0)){
        printf("密码错误\n");
        n++;
    }else break;
    }
    if (n < 3)
        printf("登录成功");
    else
        printf("账户被锁定");
}

编写函数fun,函数的功能是:求一个给定字符串中的字母的个数。(使用for循环实现)。

#include <stdio.h>
#include <string.h>
int fun(char s[100]);
main()
{
    int i;
    char s[100] = "aasfdasf132asdf312" ;
    i = fun(s);
    printf("%d", i);
}
fun(char s[100])
{
    int n = 0, i;
    for (int i = 0; i < strlen(s); i++)
    {
        if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i <= 'Z']))
            n++;
    }
    return n;
}

求年龄:有5个人坐在一起,问第 5 个人多少岁,他说比第 4 个人大 2 岁。问 第 4 个人多少岁,他说比第 3 个人大 2 岁。问第 3 个人多少岁,他说比第 2 个人大 2 岁。问第 2 个人多少岁,他说比第 1 个人大 2 岁。最后问第 1 个人,他说是10岁。请问第5个人多大?

#include <stdio.h>
main()
{
    printf("%d", age(5));
}
int age(int n){
    if(n==1) return 10;
    return age(n-1)+2;
}

利用海伦公式求三角形面积,三边长a,b,c由键盘输入。若输入的三边长不能构成三角形,输出相应提示信息。

海伦公式如下:其中s=(a+b+c)/2。三角形面积= 根号下s*(s-a)*(s-b)*(s-c)

#include <stdio.h>
#include<math.h>
main(){
    float a,b,c,s,x;
    scanf("%f %f %f",&a,&b,&c);
    if((a+b>c)&&(a+c>b)&&(b+c>a)){
        s=(a+b+c)/2;
        x=sqrt(s*(s-a)*(s-b)*(s-c));
        printf("三角形面积为:%.3f",x);
    }else printf("不能构成三角形");
}

已知abc+cba=1333,其中a、b、c均为一位数,例如:617+716=1333, 518+815=1333,试编程求出符合这一规律的a、b、c,并输出结果

#include <stdio.h>
main()
{
    int i, j, k;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            for (k = 0; k < 10; k++)
            {
                if (i * 100 + j * 10 + k > 100)
                {
                    if ((i * 100 + j * 10 + k) + (k * 100 + j * 10 + i) == 1333)
                    {
                        printf("a=%d\tb=%d\tc=%d\n", i, j, k);
                    }
                }
            }
        }
    }
}

用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出

//交换有问题
#include <stdio.h> 
void swap(int *pa,int *pb) 
{ 
int temp; 
temp = *pa; 
*pa = *pb; 
*pb = temp; 
} 
void main() 
{ 
int a,b,c; 
scanf("%d%d%d",&a,&b,&c); 
if(a>b) 
swap(&a,&b); 
if(b>c) 
swap(&b,&c); 
if(a>c) 
swap(&a,&c); 
printf("%d,%d,%d",a,b,c); 
}

有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。

#include "stdio.h"
#include "string.h"
struct Person               
{  char name[20];       
    int count;                   
}leader[3]={"Li",0,"Zhang",0,"Sun",0};
void main()
{ 
 int i,j;   char leader_name[20];  
    for (i=1;i<=10;i++)
    { 
     scanf("%s",leader_name);   
       for(j=0;j<3;j++)
          if(strcmp(leader_name,leader[j].name)==0) 
             leader[j].count++;
   }
   for(i=0;i<3;i++)
     printf("%5s:%d\n",leader[i].name,leader[i].count);
}

完美数

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。输出1000以内的完数。

#include <stdio.h>
int FindNum(int n);
int main()
{
    int sum = 0;
    int i;
    for (i = 1; i <= 1000; i++)
    {
        if (FindNum(i))
        {
            printf("%d,", i);
            printf("\n");
        }
    }
    return 0;
}
int FindNum(int n)
{
    int sum = 0,i;
    if (n == 1)
        return 1;
    for (i = 1; i < n; i++)
    {
        if (n % i == 0)
            sum += i;
    }
    if (sum == n)
        return n;
    return 0;
}