c語言aa1
⑴ 有兩個整型數組a和b,各有10個元素,將它們對應地逐個相比。如果a數組中的元素大於b數組中的相應元
#include<stdio.h>
intcmp(inta[],intb[],charc)
{inti,j,aa1[10]={0},bb1[10]={0},aa2[10]={0},bb2[10]={0};
charc1='a'+'b'-c;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(a[i]>b[j]){aa1[i]++;bb2[j]++;}
elseif(a[i]<b[j]){aa2[i]++;bb1[j]++;}
printf("%c數組:
",c);
世鬧迅for(i=0;i<10;i++)
printf("大於%c數組:%d 等於%c數組:%d 小於%c數組:%d
",
c1,aa1[i],c1,10-aa1[i]-aa2[i],c1,aa2[i]);
printf("彎襪%c數組:
",c1);
for(i=0;i<10;i++)
printf("大於%c數組:%d 等於%c數組:%d 小於%c數組:%d
",
c,bb1[i],c,10-bb1[i]-bb2[i],c,bb2[i]);
for(i=j=0;i<10;i++)j+=aa1[i]-bb1[i];
if(j==0)return0;
return(j>0?1:-1);
}
intmain()
{inti,a[10],b[10],k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
scanf("%d",&b[i]);
k=cmp(a,b,'a');
if(k==0)printf("兩個數組並列
");
elseif(k==1)printf("a數組比b數搜此組大
");
elseprintf("b數組比a數組大
");
return0;
}
⑵ 已知xy變數值,求二元一次方程abc系數 c語言
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<cstring>
#include<algorithm>
usingnamespacestd;
intmul(inta,intb)
{
into,p,q;
if(a>=b)
p=b;
else
p=a;
for(o=p;o>=1;o--)
{
升埋和if(a%o==0&&b%o==0)
{
q=o;
break;
吵盯}
}
return(a*b)/q;
}
intmain()
{
floata=0.0,b=0.0,c=0.0;
intx1,x2,x3,y1,y2,y3;
cin>>x1>>y1;
cin>>x2>>y2;
cin>>x3>>y3;
inth1,h2,aa1,aa2,bb1,bb2;
h1=y2-y3;
液枝h2=y1-y3;
aa1=(x2-x3)*(x2+x3);
aa2=(x1-x3)*(x1+x3);
bb1=x2-x3;
bb2=x1-x3;
if((bb1<0&&bb2<0)||(bb1>0&&bb2>0))
{
intk,l1,l2,m1,m2;
k=mul(abs(bb1),abs(bb2));
l1=k/abs(bb1);
l2=k/abs(bb2);
m1=h1*l1,aa1=aa1*l1;
m2=h2*l2,aa2=aa2*l2;
m1=m1-m2;
aa1=aa1-aa2;
a=m1/aa1;
b=(y2-y3-a*(x2+x3)*(x2-x3))/(x2-x3);
c=y3-a*x3*x3-b*x3;
}
if((bb1<0&&bb2>0)||(bb1>0&&bb2<0))
{
intk,l1,l2,m1,m2;
k=mul(abs(bb1),abs(bb2));
l1=k/abs(bb1);
l2=k/abs(bb2);
m1=h1*l1,aa1=aa1*l1;
m2=h2*l2,aa2=aa2*l2;
m1=m1+m2;
aa1=aa1+aa2;
a=m1/aa1;
b=(y2-y3-a*(x2+x3)*(x2-x3))/(x2-x3);
c=y3-a*x3*x3-b*x3;
}
cout<<"a="<<a<<"b="<<b<<"c="<<c<<endl;
cout<<"QQ:2416560314原創代碼,轉載前請聯系我!"<<endl;
return0;
}
⑶ C語言程序是什麼意思怎樣建存儲文件呀
樓主的意思不清楚。如果是建胡陵立這樣一個程序的話用編兆姿譯器如VC++然後在目錄中找Debug可以找到程序,運行程序就可以實現如上操作;
如果是褲猜戚建立文件那太簡單了,一樓所說的save.c
⑷ 某高校C語言前幾年關於字元串的一道上機題,望高人給出完整程序,最好別用指針,十分感謝!
我寫的這個源程序有點長,我在Dev-C++上測試過,尺啟沒問題,但要在Win-TC上運行需要把中文改為英文就可以了。注釋寫的不是很詳細
在Dev-C++上運行過程如下
請輸入要匹配的個數n:
4
請輸入4字元串:
Aab
a2B
ab
ABB
請輸入要匹配的字元串:
a[a2b]b
行號:1,匹配的字元串:Aab
行號:2,匹配的字元串:a2B
行號:4,匹配的字元串:ABB
任意鍵退出...
***********************************************************************
代緩拍碼如下:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int match_len(char str[]);
int str_same(char str1[],char str2[],int flag,int flag_case);
int str_extract(char str[],char str_m[],int flag_case);
int str_match(char str[],char str_m[],int flag_case);
main()
{
char str[50][50],str_m[50],str_temp[50];
int i,j,n;
printf("請輸入要匹配的個數n:\n");
scanf("%d",&n);
printf("\n請輸入%d字元串:\n",n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
}
printf("\n請輸入要匹配的字元串:\n");
scanf("%s",str_m);
printf("\n");
for(i=0;i<n;i++)
{
strcpy(str_temp,str[i]);
if(str_match(str_temp,str_m,0))//0時表示不區分大小寫
{
printf("行號擾困羨:%d,匹配的字元串:%s\n",i+1,str[i]);
}
}
printf("\n任意鍵退出...\n");
getch();
}
int str_match(char str[],char str_m[],int flag_case)
{//單個字元串的匹配
int len;
//獲取str_m要匹配的長度
len=match_len(str_m);
if(strlen(str)==len)//首先判斷長度是否相等
{
return str_extract(str,str_m,flag_case);
}
else
{
return 0;
}
}
int str_extract(char str[],char str_m[],int flag_case)
{//提取要匹配的元素
char str_b[50],str_m_b[50];
char str_a[50],str_m_a[5];
char str_mid[50],str_m_mid[50];
int i,j,k;
int times=1;
int flag_b,flag_a,flag_mid,flag_break=0;
//提取要匹配的元素('['符號前)
for(i=0;str_m[i]!='[';i++)
{
str_b[i]=str[i];
str_m_b[i]=str_m[i];
}
str_b[i]='\0';
str_m_b[i]='\0';
//提取要匹配的元素(']'符號後)
for(i=strlen(str_m)-1,j=strlen(str)-1,k=0;str_m[i]!=']';i--,j--,k++)
{
str_m_a[k]=str_m[i];
str_a[k]=str[j];
}
str_a[k]='\0';
str_m_a[k]='\0';
//提取要匹配的元素('[]'符號中)
for(i=0;str_m[i]!='\0';i++)
{
if(str_m[i]=='[')
{
str_mid[0]=str[i];
str_mid[1]='\0';
break;
}
}
for(i=0;str_m[i]!='\0';i++)
{
if(str_m[i]=='[')
{
i++;
for(j=0;str_m[i]!='\0';i++,j++)
{
if(str_m[i]==']')
{
str_m_mid[j]='\0';
flag_break=1;
break;
}
str_m_mid[j]=str_m[i];
}
}
if(flag_break)
{
break;
}
}
//字元比較
flag_b=str_same(str_b,str_m_b,1,flag_case);
flag_a=str_same(str_a,str_m_a,1,flag_case);
flag_mid=str_same(str_mid,str_m_mid,2,flag_case);
//匹配結果
if(flag_b && flag_a && flag_mid)
{
return 1;
}
else
{
return 0;
}
}
int str_same(char str1[],char str2[],int flag,int flag_case)
{//flag_case為1時表示區分大小寫,為0時表示不區分
char str[2]={'\0'};
int i;
if(flag==1)
{//比較
if(flag_case)
{//區分大小寫(1表示匹配,0表示不匹配)
if(strcmp(str1,str2)==0)
{
return 1;
}
else
{
return 0;
}
}
else
{//不區分大小寫(1表示匹配,0表示不匹配)
if(strcmpi(str1,str2)==0)
{
return 1;
}
else
{
return 0;
}
}
}
else if(flag==2)
{//一對多的匹配
for(i=0;str2[i]!='\0';i++)
{
str[0]=str2[i];
if(flag_case)
{//區分大小寫(1表示匹配,0表示不匹配)
if(strcmp(str1,str)==0)
{
return 1;
}
}
else
{//不區分大小寫(1表示匹配,0表示不匹配)
if(strcmpi(str1,str)==0)
{
return 1;
}
}
}
return 0;//不匹配
}
}
int match_len(char str[])
{//獲取str要匹配的長度
int i,flag=1,count_len=0;
for(i=0;str[i]!='\0';i++)
{
switch(str[i])
{
case '[': flag=0;break;//跳過方括弧中的
case ']': flag=1;break;
default : ;
}
if(flag)
{
count_len++;
}
}
return count_len;//長度是指str中除去方括弧(包括方括弧)中長度,並加上1
}
⑸ 這幾道C語言題目你能幫忙做做嗎VC環境的
第一題:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
constintN=3;
inti,j,K,II1,JF[2][1000];
floatJ[N+1][N+2],H[1000],UJ[2][1000];
voidmain()
{
voidJBB(float*H,int&II1,intK,intN);//前代過程
voidSBW(intN);//回代過程
JF[1][1]=2;
II1=3;
for(i=1;i<=N;i++)//輸入系數及等號右邊那數
for(j=1;j<=N+1;j++)
scanf("%f",&J[i][j]);
for(K=1;K<=N;K++)
{
for(i=1;i<=N+1;i++)
H[i]=J[K][i];
JBB(&H[0],II1,K-1,N);
}
SBW(N);
for(i=1;i<=N;i++)
printf("X%d=%f ",i,H[i]);
}
voidJBB(float*H,int&II1,intK,intN)//II1必須為引用
{
intM,NN,I,J,K1,ll;
floatLL,S;
K1=0;
if(II1!=3)
for(I=1;I<=K;I++)
{
M=JF[1][I];
NN=JF[1][I+1]-1;
for(J=M;J<=NN;J++)
{
LL=UJ[1][2*J];
ll=(int)LL;
H[ll]=H[ll]-H[I]*UJ[1][2*J-1];
}
}
K+=1;
S=H[K];
K1=0;
for(I=K+1;I<=N+1;I++)
{
if(fabs(H[I])<1.0E-15)continue;
UJ[1][II1]=H[I]/S;
UJ[1][II1+1]=I;
K1+=1;
II1+=2;
}
if(II1>2000)printf("error ");
JF[1][K+1]=JF[1][K]+K1;
}
voidSBW(intN)
{
intI,J,K,K1,K2,l,ll;
floatL,LL;
for(I=1;I<1000;I++)
H[I]=0;
K1=N;
for(I=K1;I>=1;I--)
{
K=JF[1][I];
K2=JF[1][I+1]-1;
LL=UJ[1][2*K2];
ll=(int)LL;
if(ll!=N+1||K>K2)
K2+=1;
else
H[I]=UJ[1][2*K2-1];
for(J=K;J<=K2-1;J++)
{
L=UJ[1][2*J];
l=(int)L;
H[I]=H[I]-UJ[1][2*J-1]*H[l];
}
}//注意循環嵌套
}
例:見圖
⑹ C語言 寫一個函數交換兩個數的值,為什麼一定要用指針
運用代碼解釋指針運用的理解如下:
#include<iostream>
using namespace std;
int fun1 (int a,int b)
{
int c;
c=a;a=b;b=c;
cout<<"a1:"<<a<<";b1:"<<b<<endl;
}
int fun2 (int *a,int *b)
{
int *c;
c=a;a=b;b=c;
cout<<"a2:"<<*a<<";b2:"<<*b<<endl;
}
int fun3(int *a,int *b)
{
int *c;
c=*a;*a=*b;*b=c;
cout<<"a3:"<<*a<<";b3:"<<*b<<endl;
}
int fun4 (int *a,int *b)
{
int c;
c=*a;*a=*b;*b=c;
cout<<"a4:"<<*a<<";b4:"<<*b<<endl;
}
int fun5 (int &a,int &b)
{
int c;
c=a;a=b;b=c;
cout<<"a5:"<<a<<";b5:"<<b<<endl;
}
int main()
{
int aa=1,bb=2;
fun1(aa,bb);
cout<<"aa1:"<<aa<<";bb1:"<<bb<<endl;
fun2(&aa,&bb);
cout<<"aa2:"<<aa<<";bb2:"<<bb<<endl;
fun3(&aa,&bb);
cout<<"aa3:"<<aa<<";bb3:"<<bb<<endl;
fun4(&aa,&bb);
cout<<"aa4:"<<aa<<";bb4:"<<bb<<endl;
aa=1,bb=2;
fun5(aa,bb);
cout<<"aa5:"<<aa<<";bb5:"<<bb<<endl;
return 0;
}
輸出結果為:
a1:2;b1:1
aa1:1;bb1:2
a2:2;b2:1
aa2:1;bb2:2
aa3:1;bb3:2
a4:2;b4:1
aa4:2;bb4:1
a5:2;b5:1
aa5:2;bb5:1
main中調用fun1()時,將實參a,b的值傳遞給了交換函數,如果此時在swap1中列印,可以看到結果是正確的,但是該過程其實是將aa和bb分別復制了一份給了函數,執行完fun1()之後,aa和bb的值沒有任何變化。
fun2(),看似的確使用了指針,但還是失敗,因為這里是將aa和bb的地址給交換了,而並沒有交換aa和bb的值。在這里由於未給c賦值,c中並沒有確定的值,c中的值是不可預見的。此時c可能指向一個未知的存儲單元。
而嚴重的情況是,該單元的數據可能是有用的,因此fun2()不但沒有實現兩個數的交換,反而給系統的穩定性帶來威脅。
fun3(),將int賦卜粗值給int *,編譯錯誤。
fun4()是正確的。為好弊螞了在函數中改變了的變數能被其它函數調用,正確的辦法是用指針變數作為函數參數,在函數執行過程中使指針變數所指向的變數值發生變化。
函數調用結束後,哲別變數值的變化依然保留下來,這樣就實現了通過函數調用是變數的值發生變化,在其它函數中可以使用這些改變了的值的目的。
fun5()也是正確的,這是引用的重要應用之一。對於引用的操作實際上是作用在引用所因的對象上。
(6)c語言aa1擴展閱讀
在函數中的參數,並不是調用者的變數,而是臨時申請的變數a和b存放main函數中變數a和b的值,並在函數中用來計算,在fun中給a和b賦值都是在操作這兩個臨時申請的變數,函數返回後,這兩個變數被舍棄,函數調用也沒有將這兩個臨時變數的值返回給main函數中調用使用的參數功能。
所以,在函數中要操作調用者申請的變數,需要給出它們的指針,函數中用指針來找友埋到這些變數的位置和內容。
⑺ /c++的三角形證明題代碼
用c語言寫的,你改改就成了c++的語句了譽圓。
用餘弦定理做。
#include <math.h>
#define q 2
#define p 1.0*4/3
main()
{float t,s,o=3,r,m,n,x,y,g,v,u,a[3],b[3],c[3],d[3],e[3],f[3];
int i;
scanf("%f",&t);
s=sqrt(o)*t*1.0/2;
r=t*1.0/2;
a[0]=0;a[1]=t;a[2]=r; b[0]=0;b[1]=0;b[2]=s;
for(i=0;i<3;i++)
{c[i]=(a[i]+q*a[i+1])*1.0/(1+q);
d[i]=(b[i]+q*b[i+1])*1.0/(1+q);
}
for(i=0;i<慶亂塌2;i++)
{e[i]=(c[i]+p*a[i+2])*1.0/陪基(1+p);
f[i]=(d[i]+p*b[i+2])*1.0/(1+p);
}
e[2]=(c[2]+p*a[1])*1.0/(1+p);
f[2]=(d[2]+p*b[1])*1.0/(1+p);
m=pow(a[0]-a[1],2);
n=pow(b[0]-b[1],2);
x=pow(e[0]-e[1],2);
y=pow(f[0]-f[1],2);
v=sqrt(m+n);u=sqrt(x+y);
g=1.0*v*v/(u*u);
printf("%f",g);
}
⑻ C語言中為什麼函數形參中二級指針和一級指針指輸出的結果一樣
兄弟,那個不是一級指針,那是指針數組
指針數組作為函數形參時會自動轉換為指針的指針,也就是你說的二級指針
char **p=book;從這一行也能證談伍明我說的,自動轉換
特別注意:它只會轉換數組的最內層扒肢(含此或我有點分不清內外)
int arr[2][6];
int (*aa)[6] = arr;//對
//int *aa1[6] = arr;//錯
//int (*aa2)[2] = arr;//錯
//int (*aa3)[] = arr;//錯
//int *aa4 = arr;//錯
//int **aa5 = arr; //錯
⑼ C語言字元數組如何轉成16進制
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
⑽ c語言文件中字元串的查找與替換問題
樓主,這種演算法不夠縝密,
如果文件是:
11123aa112aa
你要查找的是112的話,差神隱就會漏了前面的一個112了。
字元串虛廳瞎毀匹配建議採用
KMP演算法。