1、设计函数,输入两个身份证号码,比较两人的年龄大小,前者比后者大则输出-1,后者比前者大则输出1,两人一样大则输出0。
#include "stdio.h"
int compare(char str1[],char str2[])
{
for(int i=6;i<14;i++)
{
if(str1[i]<str2[i])
return -1;
else if(str1[i]>str2[i])
return 1;
}
return 0;
}
void main()
{
char str1[20],str2[20];
gets(str1);gets(str2);
printf("%d\n",compare(str1,str2));
}
2、输入一整数数列,计算-an12+an22-an32+an42…并输出该结果。
#include "stdio.h"
#define N 5
int fun(int arr[],int n)
{
int sum=0;
int flag=-1;
for(int i=0;i<5;i++)
{
sum+=flag*arr[i]*arr[i];
flag=-flag;
}
return sum;
}
void main()
{
int arr[10];
for(int i=0;i<N;i++)
scanf("%d",&arr[i]);
printf("%d\n",fun(arr,N));
}
3、将一整数数列中连续数字的最后一位改为该连续数字个数的负数,其余元素保持不变,输出转换后的结果。
【例如】输入:1,3,1,3,3,3,3,1,1,1,1 输出:1,3,1,3,3,3,-4,1,1,1,-4
【数字3连续出现了4次,则最后一个3改为-4,数字1也连续出现4次,则最后一个1改为-4。】
#include "stdio.h"
void fun(int arr[],int n)
{
int flag=1;
for(int i=0;i<n;i++)
{
if(i==n-1)
{
if(flag!=1)
printf("%d",-flag);
else
printf("%d",arr[i]);
break;
}
if(arr[i]==arr[i+1])
{
flag++;
printf("%d ",arr[i]);
}
else
{
printf("%d ",flag==1?arr[i]:-flag);
flag=1;
}
}
}
void main()
{
int arr[11]={1,3,1,3,3,3,3,1,1,1,1};
fun(arr,11);
}
4、输入整数n,输出n是2的几次方,向上取整。
【例如】输入:2049 输出:12
#include "stdio.h"
#include "math.h"
int fun(int n)
{
int i=0;
while(n>pow(2.0,i))
i++;
return i;
}
void main()
{
int n;
scanf("%d",&n);
printf("%d",fun(n));
}
5、给出标准差公式,设计程序输入一维数组,求其标准差值。
#include <stdio.h>
#include <math.h>
#define N 5
double mean(double a[128],double len)
{
double sum=0;
double mean=0;
for(int i=0;i<len;i++)
sum += a[i];
mean=sum/len;
return mean;
}
double std_c(double a[128],double len)
{
double mean_std;
mean_std=mean(a,len);
double temp=0;
double spow=0;
for (int i=0;i<len;i++)
{
spow+=(a[i]-mean_std)*(a[i]-mean_std);//平方累加
}
return sqrt(spow/(len-1));
}
void main()
{
double a[N];
for(int i=0;i<N;i++)
scanf("%lf",&a[i]);
printf("%lf",std_c(a,N));
}
6、给定一时间戳,从1970年开始计算,输出该时间戳对应的格式化日期时间,考虑闰年不考虑闰秒。
#include "stdio.h"
#include "math.h"
#include "time.h"
int isleap(int year)
{
return year%4==0&&year%100!=0||year%400==0;
}
int sumDay(int timecount)
{//计算该时间戳是多少天
return timecount/(3600*24)+1;
}
int YearMonDay(int n)
{//计算n天是几几年几月几日
int year,mon,day;
for(year=1970;n>=366;year++)
{
if(isleap(year))
n-=366;
else
n-=365;
}
int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年
if(isleap(year))
{
for(int i=0;i<12&&n>a[i];i++)
{
n-=a[i];
mon=i+1;
}
}
else
for(int i=0;i<12&&n>a[i];i++)
{
n-=b[i];
mon=i+1;
}
mon++;
day=n;
printf("%d-%d-%d\n",year,mon,day);
return 1;
}
void main()
{
int timecount=1664100697;//2022-09-25 18:11:37
YearMonDay(sumDay(timecount));
}
另外三道程序设计题目我这里没有资源,如果大家手里有题目或者其他任何问题,欢迎大家私信我,我一定会努力为大家解答,大家共同进步!祝各位一战成硕!
1、给定一组序列其中包括两个重复的数字
(1) 画出初始 大根堆,并统计调整次数,求出WPL;
(2) 画出初始小根堆,并统计调整次数,求出WPL。
2、给出AOV网
(1)根据迪杰斯特拉算法的顺序,写出起点到各结点的最短路径,并求出最短路径长度;
(2判断给出的AOV网中是否包含环路,并给出理由。
3、给定一张有向图画出带有出度的领接表的存储结构。
4、给出森林的先根和后根遍历顺序,画出该森林转化后的二叉树。
5、给定一个结构体定义,并假设只有头结点的单链表已存在,用C/C++写出从小到大排列的冒泡排序算法。
6、无