0722考试错误

1、若调用一个整形函数,且此函数中没有return语句,则正确的是说法是 D

A、该函数没有返回值        B、该函数能返回若干个系统默认值

C、能返回一个用户所希望的函数值        D、返回一个不确定的值

2、在c语言中一下不正确的说法是 B

形参需要接收,需要类型定义

A、实参可以是常量、变量、或表达式        B、形参可以是常量、变量或表达式

C、实参可以为任意类型        D、形参应与其对应的实参类型一致

3、以下程序的运行结果是 C

#include <stdio.h>
#define ADD(x) x+x
int main()
{
	int m=1,n=2,k=3,sum;
	sum=ADD(m+n)*k;
	printf("%d\n",sum);
	return 0;
}

A、18        B、9

C、12        D、10

4、在宏定义#define PI 3.1415926中,用宏名PI代替一个 B

A、双精度数        B、常量

C、单精度数        D、字符串

5、降序显示雇员和总工时

#include <stdio.h>
void jx(int a[8][7],int i,int j);
void px(int a[2][8],int b);

int main()
{
	int gs[8][7]={{2,4,3,4,5,8,8},
				  {7,3,4,3,3,4,4},
				  {3,3,4,3,3,2,2},
				  {9,3,4,7,3,4,1},
				  {3,5,4,3,6,3,8},
				  {3,4,4,6,3,4,4},
				  {3,7,4,8,3,8,4},
				  {6,3,5,9,2,7,9}};	
	int i,j,sum=0;
	printf("\t  Su M  T  W  Th F  Sa\n");
	for(i=0;i<8;i++)
	{
		printf("Employee%d ",i);
		for(j=0;j<7;j++)
			printf("%d  ",gs[i][j]);
		printf("\n");
	}
	jx(gs,8,7);
	
	return 0;
} 

void jx(int a[8][7],int i,int j)
{
	int sum=0,max=0,c;
	int e=8;
	int b[2][8]={{0,1,2,3,4,5,6,7},{0}};
//	for(i=0;i<8;i++)
//	{
//		printf("Employee%d ",i);
//		for(j=0;j<7;j++)
//			printf("%d  ",a[i][j]);
//		printf("\n");
//	}
	
	for(i=0;i<8;i++)
	{
		sum=0;
		for(j=0;j<7;j++)
		{
		//	printf("%d ",sum);
			sum=sum+a[i][j];
		//	printf("%d ",sum);
		}
		b[1][i]=sum;
		
	}
//	for(i=0;i<2;i++)
//	{
//		for(j=0;j<8;j++)
//			printf("%d ",b[i][j]);
//		printf("\n");
//	}
	
	
//	printf("Employee\t");
	px(b,8);
//	for(i=7;i>=0;i--)
//	{
//			printf(" %d ",b[0][i]);
//		
//	}
		for(i=7;i>=0;i--)
	{
			printf(" %d ",b[1][i]);
		
	}
//	printf("\n"); 
//	printf("\n总工时\t\t");
//
//	for(i=7;i>=0;i--)
//	{
//			printf(" %d ",b[1][i]);
//		
//	}
}
//	printf("%d\n",b[7]);
//	for(j=0;j<7;j++)
//	{
//		for(i=0;i<e;i++)
//		{
//			if(b[i]<b[i+1])
//			{
//				c=i-1;
//				max=b[i];
//				b[i]=b[i+1];
//				b[i+1]=max;
//			}				
//		}
//		e--;
//		printf("Employee%d\t%d\n",c,max);
//	}
//	
	
	//麻了 应该用二维数组...
	 
	
void px(int a[2][8],int b)
{
	int i,y,n,c,d,max,j;
	c=b;
	for(y=0;y<b-1;y++)
	{
		
		for(i=0;i<c-1;i++)
		{
			d=0;
			if(a[1][i]>a[1][i+1])
			{
				n=a[1][i];
				a[1][i]=a[1][i+1];
				a[1][i+1]=n;
				
				j=a[0][i];
				a[0][i]=a[0][i+1];
				a[0][i+1]=j;
			}
	
		}

		c--;
	}
//	for(i=0;i<2;i++)
//	{
//		for(j=0;j<8;j++)
//			printf("%d ",a[i][j]);
//		printf("\n");
//	}
	printf("雇员标号\t");
	for(i=0;i<2;i++)
	{
		for(j=7;j>=0;j--)
			printf("%d ",a[i][j]);
		printf("\n总工时  \t");
	}
	printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b               ");
}
//	int sum_1=0,sum_2=0;
//	int c,d;
//		
//	
//	
//	printf("\n\n");
//	for(d=0;d<8;d++)
//	{
//		sum_1=0;
//		for(i=0;i<7;i++)
//			sum_1+=a[0][i];
//		for(i=0;i<8-d;i++)
//		{
//			sum_2=0;
//			for(j=0;j<7;j++)
//			{
//				sum_2+=a[i][j];
//			}
//			if(sum_2>=sum_1)
//			{
//				c=i;
//				sum_1=sum_2;
//			}
//			else
//				c=i-1;
//		}
//		printf("Employee%d  %d \n",c,sum_1);
//			
//	}
//	
	
		
		//printf("%d\n",sum_1);
//		for(i=7;i>=e;i--)
//		{
//			sum_2=0;
//			for(j=0;j<7;j++)
//			{
//				sum_2+=a[i][j];	
//			}
//			printf("%d\n",sum_2);
//			if(sum_2<sum_1)
//			{
//				for(c=0;c<7;c++)
//				{
//					b[c]=a[i+1][c];
//					a[i+1][c]=a[i][c];
//					a[i][c]=b[c];
//					d=i+1;
//				}
//			}
//			else
//				sum_1=sum_2;
//		}
//	 	printf("Employee%d\t",d);
//		for(c=0;c<7;c++)
//		{
//			printf("%d ",b[c]);
//		}
//		printf("\n");
//		e++;
//		d=0;
//	}
	

2、用函数实现十进制转2进制,设定二进制最大存储64位,注意考虑正负情况。

#include <stdio.h>
void zheng(int a[64],int i);
void fu(int a[64],int i);

int main()
{
	int er[64]={0};
	long long int num;
	char ch; 
	int i;
	printf("请输入一个十进制整数(加上正负号):");
	ch=getchar();
	scanf("%lld",&num);

	for (i=0;i<64;i++)
	{
		er[63-i]=num%2;
		num=num/2;
	}

	
	
	if(ch=='+')
	{
		printf("该十进制数转换为二进制数为:");
		zheng(er,64); 
	}
	else
	fu(er,64);
	
	return 0;
}

void zheng(int a[64],int i)
{
	for(i=0;i<64;i++)
	{
		printf("%d",a[i]);
	}
}

void fu(int a[64],int i)
{
	for(i=0;i<64;i++)
	{
		if(a[i]==0)
			a[i]=1;
		else
			a[i]=0;
	}
	for(i=63;i>=0;i--)
	{
		if(a[i]==0)
		{
			a[i]=1;
			break;
		}
		else
			a[i]=0;
	}
		for(i=0;i<64;i++)
	{
		printf("%d",a[i]);
	}
	
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值