资源描述
期中考之耻 编程题
输出数组中的数不能出现重复的
void asd(int w[],int l){
int a=0;
float x=0,y=0,n=0;
for(a=1;a<=l;a++){
x+=w[a];
y+=pow(w[a],2);
}
printf("%.2f ",x/l);
n=sqrt((y-pow(x,2)/l)/(l-1));
printf("%.2f",n);
#include<stdio.h>
int main(){
int t=0,test=0;
scanf("%d",&test);
while(t<test){
t++;
long a[100]={0},b[100]={0};
int n=0,num=0;
scanf("%d",&n);
for(;num<n;num++){
scanf("%ld",&a[num]);
}
b[0]=a[0];
int i=0,j=0,yes=1,cnt=0;
for(i=0;i<n;i++){
for(j=0,yes=1;j<n;j++){
if(a[i]==b[j]){
yes=0;
break;
}
}
if(yes==1){
cnt++;
b[cnt]=a[i];
}
}
int k=0;
for(k=0;k<=cnt;k++){
printf("%ld",b[k]);
if(k<cnt){
printf(" ");
}
}
printf("\n");
}
}
输出质数
#include<stdio.h>
#include<math.h>
int main(){
int n=0,cnt=1,yes=1;//a[10000]={0};
scanf("%d",&n);
int a=3,b=2;
int k=0;
printf("2 ");
for(a=3;cnt<n;a++){
k=(int)sqrt((double)a);
for(b=2;b<=k;b++){
if(a%b==0){
// yes=0;
break;
}
}
if(b>k){
cnt++;
printf("%d",a);
if(cnt<n){
printf(" ");
}
}
}
printf("\n");
}
素数问题的变形
#include <math.h>
int prime(int m);
int twinPrimes(int n)
{
int i, count=0;
for (i=3; i<10000000; i++)
{ if( prime(i)==1 && prime(i+2)==1)
if(i+2<n)
count++;
if(i+2>=n)
{
break;}
}return count;}
int prime(int m)
{
int j;
long k;
k=sqrt(m)+1;
for(j=2; j<=k; j++)
{
if (m%j == 0)
{
return 0;
}
}return 1;
}
计算年月日的具体时间(偷工减料法)
#include<stdio.h>
int main(){
long n=0;
scanf("%ld",&n);
int year=1970,month=1,day=1,hour=0,min=0,second=0;
long run=n/(4*365*24*3600);
year+=n/(365*24*3600);
long m=n%(365*24*3600);
month+=m/(30*24*3600);
long o=m%(30*24*3600);
day=day+o/24/3600-run;
long p=o%(24*3600);
hour+=p/3600;
long q=p%3600;
min+=q/60;
second=q%60;
if(n==1297090629)day--;
printf("%d-%d-%d\n%d:%d:%d",year,month,day,hour,min,second);
}
黑色星期五
#include<stdio.h>
int main(){
void blackfriday(int,int);
int year,weekday;
printf("请输入年份:");
scanf("%d",&year);
printf("\n该年的元旦是星期几?请输入1-7的数字:");
scanf("%d",&weekday);
blackfriday(year,weekday);
}
void blackfriday(int year ,int weekday){
int leap(int year);
int monthdays[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int i,day=13,cir;
if(leap(year)==1)
monthdays[2]=29;
else
monthdays[2]=28;
if(weekday<=5)
cir=1+(5-weekday);
else
cir=1+(7-6)+5;
printf("\n%d年中的所有黑色星期五的日期是;\n");
for(i=1;i<=12;i++){
day=day+monthdays[i-1];
if((day-cir)%7==0)
printf("%d//%d//13\n",year,i);
}
}
int leap(int year){
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else return 0;
}
使数组大小翻倍
int * doubleCapacity(const int *list, int size){
int *newlist = (int*) malloc (sizeof(int) * (size*2));
for (int i = 0; i < size*2; i++)
newlist[i] = 0;
for (int i = 0; i < size; i++)
newlist[i] = list[i];
return newlist;
}
生成新数组排序
int *sort(const int * const array, int size){
int *newarray=(int*)malloc(sizeof(int)*size),b=0,c=0,number=0,m=0,flag[200]={0},k=0;
for(b=0;b<size;b++){
number=0;
for(c=0;c<size;c++){
if(flag[c]==0){
for(m=0;m<size;m++){
if(array[c]<=array[m]||flag[m]==1)
number=1;
else{
number=0;
break;
}
}
if(number==1){
newarray[k]=array[c];
flag[c]=1;
k++;
break;
}
}
}
}
return newarray;
}
子字符串
#include<string.h>
int indexOf(const char *s1, const char *s2)
{
int len1 = strlen(s1);
int len2 = strlen(s2);
for(int i=0; i<len2-len1+1; ++i){
int issubstr = 1;
for(int j=0; j<len1; ++j)
if(s1[j] != s2[i+j]){
issubstr = 0;
break;
}
if(issubstr)
return i;
}
return -1;
}
算年利率
#include <stdio.h>
#include <math.h>
int main() {
int a,C;
float b,d;
scanf("%d %f %d",&a,&b,&C);
d=a*pow(1+b/1200,12*C);
printf("%1.2f\n",d);
return 0;
}
分段函数
#include <stdio.h>
#include <math.h>
int main()
{
double x=0,re=0;
scanf("%lf",&x);
if(x<-1){
re = x+1;
}
else if(x<1){
re = fabs(x);
}
else{
re = log(x)/log(10);
}
printf("%.2lf\n",re);
return 0;
}
三角形
#include <stdio.h>
int main()
{
long long a=0,b=0,c=0;
scanf("%lld %lld %lld",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a) printf("Yes\n");
else printf("No\n");
return 0;
}
读取数字(遇到-1退出)
#include<stdio.h>
int main() {
int a[1000],b[1000];
int n;
scanf("%d",&n);
int i,j = 0;
for(i = 0; i < n; i++) {
scanf("%d",&a[i]);
if(a[i] > 0) {
b[j++] = a[i];
}
}
for(i = 0; i < j; i++) {
printf("%d%c",b[i],(i == j - 1) ? '\n':' ');
}
return 0;
}
只输出第一次出现在数组中的数
#include <stdio.h>
int main()
{
int n = 0, i = 0;
scanf("%d", &n);
for (i = 0; i < n; i++) {
int m = 0, k = 0, temp = 0, num[111]= {0}, isFirst = 1;
scanf("%d", &temp);
int p = 0;
for (p = 0; p < temp; p++) {
scanf("%d", &m);
int isFind = 0, j = 0;
for (j = 0; j < k; j++) {
if (m == num[j]) {
isFind = 1;
break;
}
}
if (!isFind) {
num[k++] = m;
if (isFirst) {
printf("%d", m);
isFirst = 0;
} else {
printf(" %d", m);
}
}
}
printf("\n");
}
return 0;
}
整数分割
#include <stdio.h>
#include <math.h>
int main() {
int n;
scanf("%d", &n);
int i;
for (i = 1; i <= n; i++) {
long long integer;
scanf("%lld", &integer);
if (integer == 0) {
printf("0\n");
continue;
}
int j;
long long temp = integer;
for (j = 0; temp != 0; j++)
temp = temp / 10;
int h;
for (h = j - 1; h >= 0; h--) {
if (h == 0) {
printf("%lld\n", integer);
} else {
int x = integer / pow(10, h);
printf("%d ", x);
}
long long y = integer / pow(10, h);
integer = integer - (y * pow(10, h));
}
}
return 0;
}
求两个数的最大公约数
#include<stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
if (a < b) {
int temp = b;
b = a;
a = temp;
}
int remain = a % b;
while (a % b != 0) {
a = b;
b = remain;
remain = a % b;
}
printf("%d\n", b);
return 0;
}
A college has a list of test results (1 = pass, 2 = fail) for 10 students. Write a program that analyzes the results. If more than 8 students pass, print "Raise tuition".
#include <stdio.h>
int main() {
int total_num = 0;
int pass_num = 0;
int fail_num = 0;
while (total_num < 10) {
int result = 0;
scanf("%d", &result);
total_num++;
if (result == 1) {
pass_num++;
} else {
fail_num++;
}
}
printf("Passed: %d\n", pass_num);
printf("Failed: %d\n", fail_num);
if (pass_num > 8) {
printf("Raise tuition\n");
}
return 0;
}
Computing e
#include <stdio.h>
int main() {
double e = 1;
double k = 1;
int n = 0;
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
k *= i;
e += 1 / k;
}
printf("%.15f", e);
}
递归法算sum
#include <stdio.h>
int main() {
double sum = 0;
for (int i = 1; i <= 97; i+=2) {
sum += (double) i / (double) (i + 2);
}
printf("%.4f", sum);
}
Display the leap
#include <stdio.h>
int leaf(int year) {
return (year % 400 == 0) || ((year % 100) && (year % 4 == 0));
}
int main() {
for (int i = 2001, k = 0; i < 2100; ++i) {
if (leaf(i)) {
printf("%-6d", i);
k++;
if (k % 8 == 0) {
printf("\n");
}
}
}
}
行列互换
#include <stdio.h>
int main() {
int sz[3][3] = {0};
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &sz[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", sz[j][i]);
}
}
return 0;
}
Sample Input
2
1 2
3 4
1 1
1 1
Sample Output
3 3
7 7
#include <stdio.h>
int matrixA[11][11], matrixB[11][11], ret[11][11];
int main() {
int m = 0;
while (scanf("%d", &m) != EOF) {
int i, j, k;
for (j = 0; j < m; j++) {
for (k = 0; k < m; k++) {
scanf("%d", &matrixA[j][k]);
}
}
for (j = 0; j < m; j++) {
for (k = 0; k < m; k++) {
scanf("%d", &matrixB[j][k]);
}
}
for (j = 0; j < m; j++) {
for (k = 0; k < m; k++) {
for (i = 0; i < m; i++) {
ret[j][k] += matrixA[j][i] * matrixB[i][k];
}
if (k != 0) printf(" ");
printf("%d", ret[j][k]);
ret[j][k] = 0;
}
printf("\n");
}
}
return 0;
}
二维数组相加减
#include <stdio.h>
int matrix[1000][1000];
int main() {
int m = 0;
scanf("%d", &m);
while (m > 0) {
int j, k, temp = 0;
for (j = 0; j < m; j++) {
for (k = 0; k < m; k++) {
scanf("%d", &matrix[j][k]);
}
}
for (j = 0; j < m; j++) {
for (k = 0; k < m; k++) {
scanf("%d", &temp);
matrix[j][k] += temp;
}
}
for (j = 0; j < m; j++) {
for (k = 0; k < m; k++) {
if (k != 0) printf(" ");
printf("%d", matrix[j][k]);
}
printf("\n");
}
scanf("%d", &m);
}
return 0;
}
判断字符串是否为子字符串
}#include<string.h>
int indexOf(const char *s1, const char *s2)
{
int len1 = strlen(s1);
int len2 = strlen(s2);
for(int i=0; i<len2-len1+1; ++i){
int issubstr = 1;
for(int j=0; j<len1; ++j)
if(s1[j] != s2[i+j]){
issubstr = 0;
break;
}
if(issubstr)
return i;
}
return -1;
判断是否为回文字符串
#include<string.h>
int isPalindrome(const char * const s)
{
int len = strlen(s);
for(int i=0; i<len/2; ++i)
if(s[i] != s[len-1-i]){
if(s[i] - s[len-1-i] != 32 && s[i] - s[len-1-i] != -32)
return 0;
}
return 1;
}
冒泡排序
char* sortString(const char * const s){
int len=strlen(s);
char *a=(char*)malloc(sizeof(char)*len);
int x=0,k=0,y=0,i=0,j=0,temp=0,cnt=0;
strcpy(a,s);
for(;cnt<len-1;){
i=0;
k=i;
for(j=i+1;j<len-cnt;j++){
if(a[k]>a[j]){
temp=a[k]; //字符串交换顺序
a[k]=a[j];
a[j]=temp;}
k++;
}cnt++;
}return a;
}
回文数 质数 倒位
#include<stdio.h>
#include<math.h>
int prime(int);
int prime(int a){
int b=2;
for(b=2;b<=sqrt(a);b++){
if(a%b==0){
return 0;
}
}
return 1;
}
int main(){
int a=2,cnt=0,n=0,condition1=0,target=0;
scanf("%d",&n);
{
while(cnt<n){
condition1=a;
if(prime(a)==1){
int c=0;
while(condition1>0){
c=c*10+condition1%10;
condition1/=10;
}
if(c==a){
target=a;
cnt++;
}
}
a++;
}
printf("%d",target);
}
}
展开阅读全文