1、请编写程序求解下式的值(n、k的值从键盘转入):
2、张教授最近正在研究一个项目,其间涉及到十进制与十六进制之间的转换,然而,手工将大量的十进制转换成十六进制是十分困难的。请编写程序,将给定的非负十进制数转化成相应的十六进制数并输出(用A、B、C、D、E、F分别表示十六进制的10、11、12、13、14、15)。
3、输入一个字母打印图示图形,该图形中间一行由输入字母组成,其相邻的上下两行由它前面的字母组成,按此规律,直到字母A出现在第一行和最末行为止。如下图:
A
BB
CCC
DDDD
CCC
BB
A
4惊奇近义词、试编程从N位数字串中删去M个数使剩下的数字串所表示的数值最小。
5、孪生数是指两个相差为2的素数,如3和5,5和7,11和13。请编写程序输出劳动定员15对孪生数。
6、编写程序找出文件中最长和最短的正文行并统计文件中的行数(假定最长行不超过80个字符)。
7、数列总是有一些奇妙的性质。现有一数列A,它是以递增顺序排列的,并且该数列中所有的数的质因子只有可能是2、独钓寒江雪全诗3和5。请编写程序输出这个数列中的前N个数字。
8、试编写程序实现两个大的整数的乘法运算。
参考答案:
//1、请编写程序求解下式的值(n、k的值从键盘转入):try吉他谱
#include <stdio.h>
#include <math.h>
void main(void)
{
int n,k,x;
double sum=0;
printf("请输入n和k的值:");
scanf("%d%d",&n,&k);
for(x=1;x<=n;x++)
sum+=pow(x,k);//注意计算次方的函数
printf("所求结果为:%f\n",sum);
}
//2、张教授最近正在研究一个项目,其间涉及到十进制与十六进制之间的转换,然而,手工将大量的十进制转换成十六进制是十分困难的。请编写程序,将给定的非负十进制数转化成相应的十六进制数并输出(用A、B、C、D、E、F分别表示十六进制的10、11、12、13、14、15)。
#include <stdio.h>
void main(void)
{
int data10,beichushu,yushu,shang;
char data16[10],p=0;//数组data16用于存放十六进制各位上的数
do
{
printf("请输入一个非负十进制数:");
scanf("%d",&data10);
}while(data10<0);
beichushu=data10;//将初始值作为被除数
//以下循环用于完成转换
do
{
shang=beichushu/16;//求商
yushu=beichushu%16;//求余数
if(yushu<10)//小于10则转换得到对应数字字符
data16[p++]=yushu+'0';
el//大于等于10则转换得到对应字母
data16[p++]=yushu-10+'A';
beichushu=shang;//将商作为下次的被除数继续除
}while(shang!=0);
printf("十进制数%d所对应的十六进制数为:",data10);
for(p--;p>=0;p--)
printf("%c",data16[p]);
printf("\n");
}
//3、输入一个字母打印图示图形,该图形中间一行由输入字母组成,其相邻的上下两行由它前面的字母组成,按此规律,直到字母A出现在第一行和最末行为止。如下图:
#include <stdio.h>
void main(void)
{
char ch,row,col;
do
{
printf("请输入中间行所对应的字母(大写):");
scanf("%c",&ch);
}while((ch<'A')||(ch>'Z'));
//输出图形的上半部分
for(row=1;row<=ch-'A'+1;row++)//控制行数
{
for(col=1;col<=ch-'A'-row+1;col++)//输出相应个数空格以控制位置
printf(" ");
for(col=1;col<=row;col++)//输出相应个数字母
printf("%c",row+'A'-1);
printf("\n");//换行
}
//输出图形的下半部分
for(row=1;row<=ch-'A';row++)//控制行数
{
for(col=1;col<=row;col++)//输出相应个数空格以控制位置黄歧山
printf(" ");
for(col=1;col<=ch-'A'-row+1;col++)//输出相应个数字母
printf("%c",ch-row);
printf("\n");//换行
}
}
//4、试编程从N位数字串中删去M个数使剩下的数字串所表示的数值最小。
#include "stdio.h"
#include "string.h"
#define N 80
void main()
{
char str[N+1];
int i,j,n,m,yn;//yn用于判断数字串有是否有逆序对,1-有,0-无
printf("请输入原始数字串:");
scanf("%s",str);
printf("原始数字串为:%s\n",str);
n=strlen(str);
do
{
printf("请输入要删除的数的位数(0-%d):",n);
scanf("%d",&m);
}while((m<0)||(m>n));青山不老教案
yn=1;
while((m>0)&&(yn))//有逆序对时删除较大者
{
yn=0;
for(i=0;(str[i+1]!='\0')&&(yn==0);i++)
if(str[i]>str[i+1])//有逆序对
{
for(j=i;str[j+1]!='\0';j++)
str[j]=str[j+1];
str[j]='\0';
m--;
yn=1;
}
};
if(m>0)
str[strlen(str)-m]='\0';
printf("%s\n",str);
}
//5、孪生数是指两个相差为2的素数,如3和5,5和7,11和性功能锻炼11种方法13。请编写程序输出15对孪生数。
//注意:1既不是素数,也不是合数,2是最小的素数,也是唯一的偶素数
#include <stdio.h>
党建总结//判断x是否为素数,若是则返回1,否则返回0
int judge(int x)
{
int i,yn;
yn=1;//为1表示是素数
for(i=2;(i<x)&&(yn==1);i++)
if(x%i==0)
yn=0;
return yn;
}
void main(void)
{
unsigned i=2,count=1,d1,d2;
while(count<=15)
{
d1=i;
d2=d1+2;
i++;
if(judge(d1)&&judge(d2))
printf("No.%2d:%10d%10d\n",count++,d1,d2);