前言:C语言最早是由丹尼斯.里奇(Dennis Ritchie)为了在PDP-11电脑上运行的Unix系统所设计出来的编程语言,第一次发展在1969年到1973年之间。C源于BCPL语言,后者由马丁.理察德(Martin Richards)于1967年左右设计实现的。

1.用C语言简单的输出一个九九乘法表(注意排序整齐)。

#include <stdio.h>

int main(void)
{
    int i,j;
    printf("乘法表:\n");

    for ( i = 1; i <= 9; i++)
    {
        for ( j = 1; j <= i; j++)
        {
            if (i<=4 && j==3)
            {
                printf("%5d*%d=%d",j,i,i*j);
            }
            else
            {
                printf("%4d*%d=%d",j,i,i*j);    
            }
        }
            
        printf("\n");
    }

    return 0;
}

 结果输出:

2.用C语言实现一个用户输入一个大写字母,然后以这个大写字母生成金字塔。

#include <stdio.h>

int main(void)
{
    char i,j,z,k;
    int h,q;
    printf("请输入一个大写字母:");
    scanf("%c",&k);
    if ('A'<=k && k<='Z')
    {
        q=k-65;
        for (z = 'A'; z <= k; z++)
        {
            for ( h=0; h < q; h++)
            {
                printf("  ");
            }
        
            for ( i = 'A'; i < z; i++)
            {
                printf("%c ",i);
            }
            for ( j = z; j >='A'; j--)
            {
                printf("%c ",j);
            }    
            q--;
            printf("\n");
        } 
    }
    return 0;
}

 结果输出:

3.已知数组nums[6]={1,9,4,58,12,23},定义一个指针函数int* max(int* p,int len);返回一个最大值的地址。

#include <stdio.h>

//声明
int* max(int* p, int len);

int main(void)
{
    //定义局部变量
    int nums[6]={1,9,4,58,12,23}, i,*k;
    //调用max函数,并把返回的地址给指针k;
    k=max(nums, 6);
    //打印
    printf("最大值为:%d",*k);

    return 0;
}

//返回最大值的地址
int* max(int* p, int len)
{
    //定义局部变量
    int* q,i,k=0;
    for(i=0; i<len-1; i++)
    {
        if (*(p+k) < *(p+i+1))
        {
            k=i+1;
        }
    }
    //把最大值的地址给了指针q
    q=p+k;
    //返回指针q
    return q;
}

  结果输出:

最大值为:58

4.有一个数组nums[ ]={2,7,11,15},还有一个变量target=13,写一个函数实现返回数组中两个数相加等于target的两个下标。

#include<stdio.h>
#include<string.h>

int* twoSum(int* nums, int numsSize, int target, int* returnSize);

int main(void)
{

    int nums[]={2,7,11,15},target=13,returnSize[2],numsSize=0;
    numsSize=sizeof(nums)/sizeof(int);
    twoSum(nums,numsSize,target,returnSize);
    printf("%d\n",returnSize[0]);
    printf("%d\n",returnSize[1]);

    return 0;
}

int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
    int i,j;
    for(i=0;i<numsSize-1;i++)
    {
        for(j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j]==target)
            {
                returnSize[0]=i;
                returnSize[1]=j;
            }
        }
    }
}

  结果输出:

0
2

5.编写一个去除重复字符的函数,例如:用户输入:weerrt  输出:wert 。

#include<stdio.h>
#include<string.h>

//声明
int removeDuplicates(char* nums, int numsSize);

int main(void)
{
    //定义局部变量
    int i,numsSize=0,a=0;
    char nums[64];
    //用户输入
    printf("请输入一个字符串:");
    scanf("%s",nums);
    //计算字符串字符个数
    numsSize=strlen(nums);
    //将返回结果加1给numsSize重新赋值
    numsSize=removeDuplicates(nums,numsSize)+1;
    //打印结果
    printf("去除重复字符后的结果:");
    for ( i = 0; i < numsSize; i++)
    {
        printf("%c",nums[i]);
    }
    
    return 0;
}

//去除字符串里的重复字符 函数
int removeDuplicates(char* nums, int numsSize)
{
    //定义局部变量
    int i,j,k,y=numsSize-1,a=0;

    //利用for循环遍历
    for(i=0;i<numsSize;i++)
    {
        for(j=i+1;j<numsSize;j++)
        {
            //判断是否有重复字符
            if(*(nums+i)==*(nums+j))
            {
                numsSize--;
                a++;
                for ( k = j; k < numsSize; k++)
                {
                    //利用指针解引用去除重复
                    *(nums+k)=*(nums+k+1);
                }
                j--;
            }
        }
    }

    //将后面不需要的值全部赋值为空
    for ( i = 0,j=y; i < a; i++,j--)
    {
        *(nums+j)='\0';
    }

    //返回不重复字符的个数
    return numsSize-1;
}

  结果输出:

 

 

       **有错误或者写的不好的地方,可以评论区留言或者联系我更改**

 

 

更多推荐

C语言基础程序题及答案(适合学完C基础的人练练手)