c语言期末考试-小题

目录

1.指针在函数中使用并改变实参

7、简单递归

8、冒泡排序

11、函数不能嵌套定义,但可以嵌套调用

14、-1.159e-4?

16、*p++与++(*p)

20、scanf与printf

23、while 语句判断次数少 1

24、首字符必须是字幕或下划线

25、C程序的基本组成单位

29、a++是单目运算

30、 分清%d和%f

31、宏替换

32、static

33、全局变量


先来看看这道题

若输入5,4则输出4,5?
void main() {
    int a,b;
    scanf ("%d,%d",&a,&b);
    if (a>b) a=b;b=a; 
    else a++;b++;
    printf ("%d,%d",a,b); 

} 

别秀了,根本秀不起来! 

在if和else之间如果有多条语句,则必须使用复合语句,否则程序语法错误。该程序if和else之间有两条语句a=b;b=a;,但没有加{ },是错误的。

if和else之间隔了条语句,故有语法错误不能通过编译

1.指针在函数中使用并改变实参

void swap(int *pa,int *pb) 
    { 
    	int temp; 
    	temp = *pa; 
    	*pa = *pb; 
    	*pb = temp; 
    } 

(实参和与其对应的形参各占用独立的存储单元)

2、 
 char* sp, s[10]; sp = "Hello";   正确,sp为一个字符型指针,通过赋值获得了“hello”的地址;

 char* sp, s[10]; s = "Hello";    错误,字符数组赋值,用采用strcpy()函数strcpy(s,"Hello");

3、

x|(x+1)统计x二进制数中,0的个数

x&(x-1)统计x二进制数中,1的个数

4、

for(;;) 和 while(1) 的功能是相同的

5、

语句 char str[10] = "str"; 和 char str[10] = {"str"}; 等价

与char str[10] = {"s",“t“,”r"};不等价

6、

int* p1和int *p1没有区别,赋值时要么p1或p2=&a;要么对指针进行解引,即*p1或*p2=a。

7、简单递归

7.1输入一个正整数n,将其逆序输出。要求定义和调用函数reverse(num),其功能是将num逆序输出,要求用递归实现。例如,输入12345,输出54321。

void reverse (int num)
{
    if (num<10;)
	{
        printf("%d", num);
    }
    else
	{
 		printf("%d", num%10);;
		reverse(num/10);;
    }
}

7.2定义递归函数sum(n)计算1+2+...+n, 其中n的类型是int,函数类型是double。

double sum(int n)
{
    if (n==0)      
        return 0;

    else
	    return n+sum(n-1);

}

7.3递归求阶乘 

int fact(int n)
{
	if(n==0)
	return 1;
	else
	return n*fact(n-1);
}

7.4定义函数gcd( m, n),用递归法求m和n的最大公约数。 使用辗转相除法求最大公约数的递归算法描述如下: 

1.png

int gcd(int m, int n) 
{
    if(n==0)
	{
        return m;
    }
	else
	{
    	return gcd(n,m%n);
    }
}

 总结:找出第n项的通项公式放在else,推出通项公式减小逼近的值放在if中判断后结束。

8、冒泡排序

#include<iostream>
using namespace std;
const int N=101;
 
 
 
void BubbleSort(int a[],int len)
{
	for(int i=0;i<len;i++)
		for(int j=0;j<len-1-i;j++)
			if(a[j]>a[j+1])
				swap(a[j],a[j+1]);
}
 
int main()
{
	int
  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NO.-LL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值