算法题练习

算法题练习

  1. 若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是__C___
    A、(a+i) B、 a[p-a] C、 p+i D、(&a[i])
  2. 若有以下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;,则数值为6的表达式是___C___
    A、p+6 B 、(p+6) C、*p+=5 D、p+5
  3. 若已定义int a[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式的是___C____
    A、p+1 B、a+1 C、a++ D、++p
  4. 若有以下说明语句int a[10],*p1,*p2; p1=a; p2=&a[5],则p2-p1的值为___A____
    A、5 B、6 C、10 D、以上均不对
  5. 以下程序的输出结果是__B___
    #include<stdio.h>
    int main(void)
    {
    int a[]={1,2,3,4,5,6},*p;
    p=a;
    printf(“%d,%d”,p,(p+4));

}
A.0,5 B. 1,5 C、0, 6 D、1,6

  1. 输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1^3 + 5^3 + 3^3。
#include <stdio.h>
#include <math.h>
int main(void)
{
	int sum;
	for(int i=100; i<1000; i++){
		sum = 0;
		for(int k=i; k>0; k/=10){
			sum += pow(k%10, 3); 
		}
		if(sum == i){
			printf("%d ", i);
		}
	}
	return 0;
}
  1. 已知一个数组int a[10]={1,2,3,4,5,6,7,8,9,10},编程将数组元素逆置并输出。
#include <stdio.h>
int main(void)
{
	int a[10] = {1,2,3,4,5,6,7,8,9,10};
	for(int i=0; i<5; i++){
		int temp = a[i];
		a[i] = a[10-i-1];
		a[10-i-1] = temp;
	}
	for(int i=0; i<10; i++){
		printf("%d ", a[i]);
	}
}
  1. 已知两数组a[5]={1,3,5,7,9}; b[5]={2,4,6,8,10};将其合并为一个有序的升序数组。
#include <stdio.h>
int main(void)
{
	int a[5]={1,3,5,7,9}; 
	int b[5]={2,4,6,8,10};
	int c[10];
	int  j=0, k=0, p=0;
	
	for(int i=0; i<10; i++){
		if(a[j]<b[k] && j<5){
			c[p++] = a[j++];
		}
	
		else{
			c[p++] = b[k++];
		}
	}
	for(int i=0; i<10; i++){
		printf("%d ", c[i]);
	}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值