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

前言: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;
}

  结果输出:

 

 

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

 

 

  • 24
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
C语言是一种广泛应用在程序设计中的编程语言,也是许多计算机科学专业学生必须学习的一个重要语言。在面试中,C语言基础通常是一个重要的考察点。下面是一些常见的C语言基础面试及其答案: 1. C语言中的指针是什么? 指针是一种变量,用于存储内存地址。可以使用指针来访问存储在内存中的数据。 2. C语言中的宏是什么? 宏是一种预处理器指令,它可以在编译前对代码进行文本替换。它可以用于定义常量、函数和代码片段。 3. C语言中的数组和指针有什么区别? 数组和指针都可以用来访问内存中的数据。数组是一组连续的内存单元,每个单元都有自己的地址,可以使用下标来访问数组中的元素。而指针则是一种变量,存储一个地址,可以使用指针间接访问内存中的数据。数组的大小在编译时确定,而指针可以动态分配内存。 4. C语言中的结构体是什么? 结构体是一种用户定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的数据类型。结构体由多个成员变量组成,每个成员变量都可以是不同的数据类型。 5. C语言中的函数指针是什么? 函数指针是指向函数的指针变量,可以用来存储函数的地址。函数指针可以作为参数传递给其他函数,也可以用于实现函数回调。 以上这些是C语言基础面试答案的一些示例。在实际面试中,还需要根据具体岗位对C语言的要求进行适当调整。不管是面试还是实际开发中,掌握C语言基础是非常重要的,这样才能更好地理解和实现软件工程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值