C语言简单编程题目两道,求高手做一下。高分!!!!

作者&投稿:怀洋 (若有异议请与网页底部的电邮联系)
高分求助!!!谁帮我做两道编程的题目!!!高分求助!!!~

很多大学都有类似的网站,你可以百度一下.

ACM网站上的题目 难度 与 C(谭浩强)或者C++(潜能)书上题目比较:可以这么说吧,书上的最难的题目,在POJ上是最简单的。而 hdu(杭电)上 的题目有非常多跟书难度上差不多。

ACM网站 上的题目,用什么语言写都可以,不过用C,C++得还是多。 所有题目都适合用C++写。
个人认为,一般没有题目是C++特色的,只有你编出的程序具有C++特点。

//第一题:这个绝对简单,便捷。界面良好 ---打印菱形
#include
int main()
{
int i,j,n;
printf("请输入菱形高:n = ");
while( scanf("%d",&n) && n>0 )
{
printf("
");
puts("--------------------------------------------------------------------------------");
for( i = 0 ; i< n ; i++ )
{
for(j=0;j < n-i ; j++ )
printf(" ");
for(j=0;j < (i<<1)+1 ; j++ )
printf("*");
printf("
");
}
for( i = n-2 ; i>=0 ; i-- )
{
for(j=0;j < n-i ; j++ )
printf(" ");
for(j=0;j < (i<<1)+1 ; j++ )
printf("*");
printf("
");
}
puts("--------------------------------------------------------------------------------");
printf("请输入菱形高:n = ");
}
return 0;
}


/*

请输入菱形高:n = 8

------------------------

*
***
*****
*******
*********
***********
*************
***************
*************
***********
*********
*******
*****
***
*
------------------------

*/











/*第二题:输入n个点的平面坐标,程序将这些点按照距离原点从近到远的顺序进行排序并输出。(n>=6)。*/
#include
#include
#include
#include
#define MAXN 200
typedef struct PO
{
double x;
double y;
double z;
} POINT;
POINT a[MAXN];
POINT * p[MAXN];
int cmp( const void * a, const void * b )
{
if( ((POINT*)a)->z > ((POINT*)b)->z )
return 1;
else
return -1;
}

void Init()
{
int i;
for( i = 0 ; i < MAXN ; i++ )
{
p[i] = &a[i];
}
}

int main()
{
int n,i,j,k;
while(1)
{
Init();
printf("
有几个点? n=");
scanf("%d",&n);
if(n<=0) continue;
for(i=0;i<n;i++)
{
printf("请输入第 %d 个点的 x 和 y 坐标: ",i+1);
scanf("%lf%lf",&a[i].x,&a[i].y);
a[i].z = sqrt(a[i].x*a[i].x + a[i].y * a[i].y);
}
qsort(a,n,sizeof(POINT),cmp);
printf("到原点距离排序后输出:
");
for(i=0;i<n;i++)
{
printf("( %lf , %lf ) = %lf
",p[i]->x,p[i]->y,p[i]->z);
}
}
return 0;
}

/*

有几个点? n=6
请输入第 1 个点的 x 和 y 坐标: 1 9
请输入第 2 个点的 x 和 y 坐标: 8 77
请输入第 3 个点的 x 和 y 坐标: 0 0
请输入第 4 个点的 x 和 y 坐标: 37 3
请输入第 5 个点的 x 和 y 坐标: 89 102
请输入第 6 个点的 x 和 y 坐标: 34 23
到原点距离排序后输出:
( 0.000000 , 0.000000 ) = 0.000000
( 1.000000 , 9.000000 ) = 9.055385
( 37.000000 , 3.000000 ) = 37.121422
( 34.000000 , 23.000000 ) = 41.048752
( 8.000000 , 77.000000 ) = 77.414469
( 89.000000 , 102.000000 ) = 135.369864
*/
///////哥们。赶紧加分呀。。通宵给你做出来了。。。。。
//又不明白的加我 695033480 。 我负责到底!!!

第1题 :

#include <stdio.h>
#include <stdlib.h>

#define MAX 200

int main(void)
{
int a[MAX], i = 0;

srand(time(NULL)); // 时间种子, 保证真随机, 每次不会相同

while (i < MAX) {
a[i] = rand() % 10000; // 随机获得10000以下数字, 0-9999

if (a[i] < 1000) { // 不是4位数
continue; // 重新随机
}

i++;
}

FILE *fp;

if ((fp = fopen("in.dat", "wb")) == NULL) {
printf("Open failed.\n");
}

//fwrite(a, sizeof(a), 1, fp); // 将数据写入文件, 字节的方式

for (i = 0; i < MAX; i++) { // 字符的方式, 看你下面的scanf, 可能你是要这种
fprintf(fp, "%d ", a[i]);
}

return 0;
}

第2题 :

void isVal(void)
{
int i, tmp, val;
int count = 0, j = 0;

for (i = 0; i < MAX; i++) { // 循环验证所有数字
count = 0; // 每次清0
tmp = a[i]; // 为了不改变a数组的值, 用tmp保存着

while (tmp > 0) { // 依次取得4个位存到val变量中
val = tmp % 10; // 个十百位位的顺序
tmp /= 10; // 每次除10, 以去掉个位数

if (val == 0 || val == 2 || val == 4
|| val == 6 || val == 8) { // 取得的数只要是这5个数中任意一个, count计数就加1
count ++;
}
}

if (count == 4) { // 如果count=4表示4个位都是0/2/4/6/8
b[j++] = a[i]; // 则复制此数字到b数组中, 同时j自增1
}
}

cnt = j; // j的值就是总共符合要求的数, 全局变量cnt赋值与j相同即可.

for (i = 0; i < cnt - 1; i++) { // 冒泡排序将b从小到大排列
for (j = 0; j < cnt - 1 - i; j++)
if (b[j] > b[j + 1]) {
tmp = b[j];
b[j] = b[j + 1];
b[j + 1] = tmp;
}
}

return;
}

void isval(int * a,int *b,int &cnt)
{
int t=0;
int min;
int j=0;
/***********提取符合条件的数*************/
for(int i=0;i<200;i++)
{
n=a[i]%1000;
if(n==0 || n=2 || n==6 || n==8)
{
*b++=a[i];
t++;
}
}
cnt=t;
/***********对数进行排序*************/
for(i=0;i<cnt-1;i++)
{
for(j=i+1;j<cnt;j++)
{
if(b[i]>b[j])
{
min=b[j];
b[j]=b[i];
b[i]=min;
}
}
}

}

两道C语言题目,求答案和解析,谢谢~
答:第9题:【C】核心知识点:1、逗号表达式,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。2、++a与a++的区别,前者为先自加1而后引用当前值参与计算,后者为先引用当前值参与计算而后自加1。x=(a=3,b=++a);1)执行a=3,此时a值为3;2)执行++a,此时a值为4;3)执行b=++a...

C语言程序两道题目
答:第二次循环,x=4,x%2=4%2=0,结果false,因此输出格式为##%d\n,也就是##4并换行 第三次循环,x=5,x%2=5%2=1,非0即真,因此输出格式为**%d,也就是**5,至此循环结束。第二题:答案i=0,j=4,k=6 初始化完毕,a=10,b=c=d=5,i=j=k=0 for(;a>b;++b)i++;没有初始...

几道简单的C语言编程题目!!~~求教高手
答:int i=2,t;while(a<=10000.0){ if((i%2)==0){ s+=1.0/a;a=a+2.0;i++;} else { s-=1.0/a;a=a+2.0;i++;} } printf("%f\n",s);} //一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第10次 //落地时,共经过多少m?第10次反弹多高?includ...

C语言 两道简单程序题
答:else x=25;楼主请注意else总是和自己前面最近的if语句结合!在本题中a=0,为假,不执行后面的d=d-10;其实到这就可以选出答案了,后面的与d无关了,在帮你分析一下后面的吧!if为假,就执行else的语句,else下面又是一个if语句,!b=0不执行后面的if(!c)x=15;语句了。所以x=25;2.先看2...

C语言编程题目?
答:以下是C语言代码实现:```c include <stdio.h> void GetOdd(int a[], int *b, int *m) { int i;m = 0; // 初始化奇数个数为0 for (i = 0; i < 9; i++) { if (a[i] % 2 != 0) { // 判断是否为奇数 b[(*m)++] = a[i]; // 存储奇数并将奇数个数加1 } ...

求C语言编程题
答:求大量C语言编程题,最好附上代码我要的是有解释的,有思路,最好跟书上的解答一样... 求大量C语言编程题,最好附上代码我要的是有解释的,有思路,最...2、试编程判断输入的正整数是否既是5又是7的整数倍数。若是,则输出yes;否则输出no。#include<stdio.h>int main(){ int a; printf("input a number...

C语言编程题,简单
答:头文件我贴在这儿,实现文件我贴到贴吧里面,大家可以去看 路径为:百度贴吧 > 软件与编程 > c语言吧 > 某课程设计---<<文件相似判断>> --- //头文件 ifndef _TWOFILE_H_define _TWOFILE_H_include <stdio.h> include <string.h> include <stdlib.h> //宏定义用于控制用户最大的输入长度...

大一c语言两道题目,帮忙写代码,在线等!
答:问题2:include <stdio.h>#include <math.h>double func(int m){ double r = 0; int i; for(i = m; i <= 2*m; i ++) r+=sqrt(i); return r;}int main(){ int n,m=1; scanf("%d",&n); while(func(m)<=n) m++; printf("%d\n", m...

求高手解答C语言编程题~~~
答:include<stdio.h> double get_cos(double x);double fun(double x,int n);void main(){ //cos(x)=1-x2/2!+x4/4!-x6/6!+……//要求:X的值由键盘输入(代表弧度),//运算精度保持到最后一项的绝对值小于10的-6此方为止。//注明(X4是x的4次方,X6是X的6次方)printf("%lf\n",...

两道C编程问题
答:输入一个正整数,对他不断的进行初以2的操作,一直到最后最后的x/2=0,对于20来讲就是x=1的时候,其实也就是转化为2进制时候的最高位,不断的递归调用,从最高位输出到最地位。我们手算一个10进制转化为二进制时候也是这么算的。第二题:用结构体数组来实现 // 结构体 include <stdio.h> t...